CSS代码规范

2019-05-24  本文已影响0人  Mica_马超

CSS代码规范

文档

CSS 文件使用无 BOM 的 UTF-8 编码。
使用 2 个空格做为一个缩进层级,不允许使用 4 个空格 或 tab 字符。
每行不得超过 120 个字符,除非单行不可分割。
当一个 rule 包含多个 selector 时,每个选择器声明必须独占一行。
/* good */
.post,
.page,
.comment {
  line-height: 1.5;
}

/* bad */
.post, .page, .comment {
  line-height: 1.5;
}
属性选择器中的值必须用双引号包围。

不允许使用单引号,不允许不使用引号。

/* good */
article[character="juliet"] {
  voice-family: "Vivien Leigh", victoria, female
}

/* bad */
article[character='juliet'] {
  voice-family: "Vivien Leigh", victoria, female
}
属性定义必须另起一行。
/* good */
.selector {
  margin: 0;
  padding: 0;
}

/* bad */
.selector { margin: 0; padding: 0; }
选择器的嵌套层级应不大于 3 级,位置靠后的限定条件应尽可能精确。
/* good */
#username input {}
.comment .avatar {}

/* bad */
.page .header .login #username input {}
.comment div * {}
在可以使用缩写的情况下,尽量使用属性缩写。
/* good */
.post {
  font: 12px/1.5 arial, sans-serif;
}

/* bad */
.post {
  font-family: arial, sans-serif;
  font-size: 12px;
  line-height: 1.5;
}
属性书写顺序

同一 rule set 下的属性在书写时,应按功能进行分组,并以 Formatting Model(布局方式、位置) > Box Model(尺寸) > Typographic(文本相关) > Visual(视觉效果) 的顺序书写,以提高代码的可读性。

另外,如果包含 content 属性,应放在最前面。

.sidebar {
  /* formatting model: positioning schemes / offsets / z-indexes / display / ...  */
  position: absolute;
  top: 50px;
  left: 0;
  overflow-x: hidden;

  /* box model: sizes / margins / paddings / borders / ...  */
  width: 200px;
  padding: 5px;
  border: 1px solid #ddd;

  /* typographic: font / aligns / text styles / ... */
  font-size: 14px;
  line-height: 20px;

  /* visual: colors / shadows / gradients / ... */
  background: #f5f5f5;
  color: #333;
  -webkit-transition: color 1s;
  -moz-transition: color 1s;
  transition: color 1s;
}
清除浮动

当元素需要撑起高度以包含内部的浮动元素时,通过对伪类设置 clear 或触发 BFC 的方式进行 clearfix。尽量不使用增加空标签的方式。
触发 BFC 的方式很多,常见的有:

.clear:before,
.clear:after{
    content: " ";
    display: table;
}

.clear:after{
    clear: both;
}

尽量不使用 !important 声明。

必须注意的是,仅在设计上 确实不允许任何其它场景覆盖样式 时,才使用内联的 !important 样式。通常在第三方插件环境的应用中使用这种方案。

url() 函数中的路径不加引号。
RGB颜色值必须使用十六进制记号形式 #rrggbb。不允许使用 rgb()。带有alpha的颜色信息可以使用 rgba()。使用 rgba() 时每个逗号后必须保留一个空格。
颜色值可以缩写时,必须使用缩写形式。
颜色值不允许使用命名色值。
颜色值中的英文字符采用小写。
必须同时给出水平和垂直方向的位置。

2D 位置初始值为 0% 0%,但在只有一个方向的值时,另一个方向的值会被解析为 center。为避免理解上的困扰,应同时给出两个方向的值。

/* good */
body {
  background-position: center top; /* 50% 0% */
}

/* bad */
body {
  background-position: top; /* 50% 0% */
}

字体族

font-family 属性中的字体族名称应使用字体的英文 Family Name,其中如有空格,须放置在引号中。

所谓英文 Family Name,为字体文件的一个元数据,常见名称如下:

字体 操作系统 Family Name
宋体 (中易宋体) Windows SimSun
黑体 (中易黑体) Windows SimHei
微软雅黑 Windows Microsoft YaHei
微软正黑 Windows Microsoft JhengHei
华文黑体 Mac/iOS STHeiti
冬青黑体 Mac/iOS Hiragino Sans GB
文泉驿正黑 Linux WenQuanYi Zen Hei
文泉驿微米黑 Linux WenQuanYi Micro Hei
h1 {
  font-family: "Microsoft YaHei";
}
font-family 按「西文字体在前、中文字体在后」、「效果佳 (质量高/更能满足需求) 的字体在前、效果一般的字体在后」的顺序编写,最后必须指定一个通用字体族( serif / sans-serif )。
需要在 Windows 平台显示的中文内容,其字号应不小于 12px。
font-weight 属性必须使用数值方式描述。

CSS 的字重分 100 – 900 共九档,但目前受字体本身质量和浏览器的限制,实际上支持 400 和 700 两档,分别等价于关键词 normal 和 bold。

line-height 在定义文本段落时,应使用数值。

将 line-height 设置为数值,浏览器会基于当前元素设置的 font-size 进行再次计算。在不同字号的文本段落组合中,能达到较为舒适的行间间隔效果,避免在每个设置了 font-size 都需要设置 line-height。

.container {
  line-height: 1.5;
}

属性前缀

带私有前缀的属性由长到短排列。

Hack

需要添加 hack 时应尽可能考虑是否可以采用其他方式解决。
尽量使用 选择器 hack 处理兼容性,而非 属性 hack。
尽量使用简单的 属性 hack
.coldCity .top {
  top: 24px;
  top: 24px\0; /*ie9-11*/
  top/*\**/: 26px\9; /*ie8*/
}
上一篇下一篇

猜你喜欢

热点阅读