css编写规范

一、注释规范 
1、文件顶部注释(推荐使用) 

Css 代码 
</div>
  1. /*  
  2. * @description: 中文说明  
  3. * @author: name  
  4. * @update: name (2013-04-13 18:32)  
  5. */  
  6. </ol>
    


2、模块注释 
模块注释必须单独写在一行 

Css 代码 
</div>
  1. /* module: module1 by 张三 */  
  2. …  
  3. /* module: module2 by 张三 */  
  4. </ol>
    


3、单行注释与多行注释 
单行注释可以写在单独一行,也可以写在行尾,注释中的每一行长度不超过 40 个汉字,或者 80 个英文字符。 

Css 代码 
</div>
  1. /* this is a short comment */  
  2. </ol>
    


多行注释必须写在单独行内 

Css 代码 
</div>
  1. /*  
  2. * this is comment line 1.  
  3. * this is comment line 2.  
  4. */  
  5. </ol>
    


4、特殊注释 
用于标注修改、待办等信息 

Css 代码 
</div>
  1. /* TODO: xxxx by name 2013-04-13 18:32 */  
  2. /* BUGFIX: xxxx by name 2012-04-13 18:32 */  
  3. </ol>
    


5、区块注释 
对一个代码区块注释(可选),将样式语句分区块并在新行中对其注释。 

Css 代码 
</div>
    1. /* Header */  
    2. /* Footer */  
    3. /* Gallery */  
    4.     </ol>
      </ol>
      

二、编码规范

 

1. tab 键用(必须)四个空格代替

2. 每个样式属性后(必须)加 ";"

方便压缩工具 "断句"。

3. Class 命名中(禁止)出现大写字母,(必须)采用” - “对 class 中的字母分隔,如:

 /* 正确的写法 */
 .hotel-title {font-weight: bold;}

/* 不推荐的写法 */
.hotelTitle {
font-weight: bold;
}

  • 用 "-" 隔开比使用驼峰是更加清晰。
  • 产品线 - 产品 - 模块 - 子模块,命名的时候也可以使用这种方式(@Artwl)

 

4. 空格的使用,以下规则(必须)执行:

 .hotel-content {font-weight: bold;}
  • 选择器与 之前(必须)要有空格
  • 属性名的 后(必须)要有空格
  • 属性名的 前(禁止)加空格

一个原因是美观,其次 IE 6 存在一个 bug, 戳bug

 

5. 多选择器规则之间(必须)换行

当样式针对多个选择器时每个选择器占一行

 /* 推荐的写法 */
 a.btn,
 input.btn,
 input[type="button"] {......}

 

6. (禁止)将样式写为单行, 如

.hotel-content {margin: 10px; background-color: #efefef;}

单行显示不好注释,不好备注,这应该是压缩工具的活儿 ~

 

7. (禁止)向 后添加单位, 如:

.obj {left: 0px;}

只是为了统一。记住,绿色字表强调,不表强制!

 

 

8. (禁止)使用 css 原生import

使用 css 原生 import 有很多弊端,比如会增加请求数等....


9. 不要轻易改动全站级 CSS 和通用 CSS 库。改动后,要经过全面测试。8. 避免使用 filter

10. 避免在 CSS 中使用 expression

11. 避免过小的背景图片平铺,小图片(必须)sprite 合并

12. 层级 (z-index) 必须清晰明确,页面弹窗、气泡为最高级(最高级为 999),不同弹窗气泡之间可在三位数之间调整;普通区块为 10-90 内 10 的倍数;区块展开、弹出为当前父层级上个位增加,禁止层级间盲目攀比。

13. 背景图片请尽可能使用 sprite 技术, 减小 http 请求, 考虑到多人协作开发, sprite 按照模块、业务、页面来划分均可。

 

 

14. (推荐)属性的书写顺序, 举个例子:

.hotel-content {
     /* 定位 */
     display: block;
     position: absolute;
     left: 0;
     top: 0;
     /* 盒模型 */
     width: 50px;
     height: 50px;
     margin: 10px;
     border: 1px solid black;
     / * 其他 * /
     color: #efefef;
 }
  • 定位相关, 常见的有:display position left top float 等
  • 盒模型相关, 常见的有:width height margin padding border 等
  • 其他属性

    按照这样的顺序书写可见提升浏览器渲染 dom 的性能

 

15. (推荐)当编写针对特定 html 结构的样式时,使用元素名 + 类名

/* 所有的 nav 都是针对 ul 编写的 */
 ul.nav {......}

".a div" 和 ".a div.b",为什么后者好?如果需求有所变化,在 ".a" 下有多加了一个 div,试问,开始的样式是不是会影响后来的 div 啊 ~

 

16. (推荐)IE Hack List

 /* 针对 ie 的 hack */
 selector {
     property: value;     /* 所有浏览器 */ 
     property: value\9;   /* 所有 IE 浏览器 */ 
     property: value\0;   /* IE8 */
     +property: value;    /* IE7 */
     _property: value;    /* IE6 */
     *property: value;    /* IE6-7 */
 }

当使用 hack 的时候想想能不能用更好的样式代替

 

17. (不推荐)ie 使用filter,( 禁止)使用expression

这里主要是效率问题,应该当格外注意,咱们要少用烧 CPU 的东西 ~ 

18. (禁止)使用行内(inline)样式

<p style="font-size: 12px; color: #FFFFFF"> 靖鸣君 </p>

像这样的行内样式,最好用一个 class 代替。又如要隐藏某个元素,可以给他加一个 class

.hide {display: none;}

尽量做到样式和结构分离 ~

 

19. (推荐)reset.css 样式

推荐网站:http://www.cssreset.com/

 

20.(禁止)使用 "*" 来选择元素

/* 别这样写 */
* {
    margin: 0;
    padding: 0;
}

这样写是没有必要的,一些元素在浏览器中默认有 margin 或 padding 值,但是只是部分元素,没有必要将所有元素的 margin、padding 值都置为 0。

21. 链接的样式,(务必)按照这个顺序来书写

a:link -> a:visited -> a:hover -> a:active