移动端CSS重置

时间:2021-02-03 18:07:38

移动端 CSS Reset 该怎么写

为了应对各大浏览器厂商对浏览器默认样式的不统一处理,我们往往会进行一个 css reset 操作,由于没有标准而且受个人偏好影响,每个公司实现的都不尽相同。在移动端的我们需要关注哪些点呢?

  1. 特别针对 IOS 设备的问题
  2. 滚动容器的问题
  3. 不同浏览器会给同一种标签的元素设置不同的默认样式

下面是我经常使用的一种 css reset 方式:

@charset "utf-8";

* {
  /**
   * 简单粗暴, 一劳永逸的写法
   */
  padding: 0;
  margin: 0;
  font: inherit;
  vertical-align: baseline;
}

* {
  /*
   * 这个属性只用于iOS, 当你点击一个链接或者通过Javascript定义的可点击元素的时候
   * 它就会出现一个半透明的灰色背景
  */
  -webkit-tap-highlight-color: rgba(0,0,0,0);
}

a, a:active, a:hover {
  /**
   * 某些浏览器会给 a 设置默认颜色
   */
  color: unset;
  text-decoration: none;
}

ol, ul, li {
  /**
   * 去掉列表样式
   */
  list-style: none;
}

img {
  border: 0;
  vertical-align: middle
}

table {
  /**
   * 去掉 td 与 td 之间的空隙
   */
  border-collapse: collapse;
  border-spacing: 0;
}

input, textarea, select {
  outline: none; /*去掉fouce时边框高亮效果*/
  background: unset; /*去掉默认背景*/
  appearance: none;
  -webkit-appearance: none; /* 去除ios输入框阴影 */
}

body {
  -webkit-text-size-adjust: none; /* 禁止字体变化 */
  font-size: 14px;
  font-weight: 400;
  font-family: Helvetica,Arial,sans-serif;
  line-height: 1;
  -webkit-overflow-scrolling: touch; /* 设置滚动容器的滚动效果 */
}

/* 禁止选中文本内容 */
*:not(input, select, textArea) {
  -webkit-user-select: none;
}

如果有不对的地方或者您有其他建议,欢迎指正或者一起讨论。