前言
本文就css代码规范进行简单的整理,不完善以及不正确之处欢迎大家批评指正。
选择器
- 选择器命名
选择器命名,class命名时选择语义化的,不建议使用直接样式效果,比如.red,.fontBold,另外整体的样式文件中命名建议使用统一的规则,或者驼峰式,或者中划线分割,命名注意缩写,避免与id重名,不建议通过1 2 3等序号命名。关于命名规则以及常见类名可以本站搜索相关文章 - 选择器选择原则
基本的选择器中,尽量使用类选择器;复杂选择器中,尽量少使用层次、属性的相关选择器。 - 样式重用
样式重复可以一定程度的避免,用类样式来提炼公共样式,建议多用样式的预处理,比如less。基本使用类选择器实现重用最简单实用。 - 合理的避免id的使用
原因有二:一个是id修饰权重比较高,不容易被class修改重定义;第二个,id一般被用来定义特定模块的。如果该模块是可重用的,或者不具有特殊意义的不建议使用。 - 筛选出同时具有
中间没有任何间隔,与群组选择器,后代选择器区分开 - 非主流选择器
主要包括:伪类选择器,结构选择器,伪元素,属性选择器,语言选择器等。可以本站搜索选择器攻略查看所有的选择器分类以及使用。基于兼容性考虑,建议大家慎用。 选择器层级
层级关系确定在3层以内,去除不必要的层级关系,简化dom结构或者样式组件结构。样式分类
全局样式
顾名思义,没有任何限制条件的样式,可以任何位置使用并达到其显示效果。如果可能有样式代码冲突的,建议写在样式组合中最后。定义全局样式的时候,注意样式污染的问题。一般建议用.c-
来区分。- 布局样式
一般用于页面布局,我们经常会把页面布局和模块混合起来,或者根本就不区分。这实际是因为我们对样式理解不够深刻。实际。从视图分析,很多模块在宽高以及整体布局上都是基于整体布局的。而一些整体布局又是可以重用的,所以这部分建议单独分出来,提高开发效率。一般建议用.g-
来区分。 - 模块样式
以模块的思维去写样式代码,按照层级关系依次展开样式,保证模块清晰同时使得一些样式名称可复用,比如title,price等。其中模块样式顶级也可以理解为命名空间,模块子样式可以追加模块样式前缀,比如header-nav。模块样式是样式代码中占据比例最多的部分,针对具体样式,希望既能做到针对业务,又能提炼出可复用、耦合度低的优质模块。一般建议用.m-
来区分。 - 组件样式
页面中总有一部分常规组件是我们经常用的,定义好他们对我们开发工作有事半功倍的效果。这些组件常见的有,按钮,单选框,多选框,下拉框,时间选择控件等。一般建议用.u-
来区分。 - 功能样式(交互样式)
有些页面中的元素是有额外的含义的,涉及到这类样式时,有时有特定的交互,或者功能,或者内容,我们针对这部分定义为功能样式,比如删除,查看详情,增加,搜索,这些在涉及具体功能时追加的效果,我们会写在功能样式中。一般建议用.f-
来区分。 皮肤样式
任何一个网站或者页面都有其布局思想,在这个整体的布局当中,颜色自然是不可缺少的,针对主色,交互色,响应颜色,配色等,我们都会把这一类归到皮肤样式中。一般建议用.s-
来区分。样式优化
合理利用继承和默认
- 可继承的样式如果是正确的,不用重写;如果是不对的,纠正;
- 任何样式都有默认值。或者是继承来的默认值,针对默认值要清楚,决定是否调整
- 抽离公共样式
代码中有超过2个类超过3行以上公用代码,建议抽离公共样式到公共区或者提炼公共样式 - 复合属性缩写
比如font,border,margin,padding,background等 - 减少层级关系
层级关系越多,代码量越大,同时访问越慢 - 使用高效能的选择器
多使用class选择器,css的查询顺序为从右向左,所以最后一个选择器基本决定了你第一次匹配得到的整体数量。 - 重绘与重排
影响标签显示样式的叫重绘;影响标签大小-盒模型,位置关系的称为重排。尽量减少这两种,如果有需要,优先选择用重绘代替重排。 - 待补充
书写规范
- 规则完成一组之后换行,
- 选择器开始语法之前大括号前面加空格。
- 只有单行样式时放一行,两行以上每行样式一行,每一行添加分号,最后一行也加。
- 每个样式属性值前添加空格而属性名之后不加空格。
- 数值为0的不用加单位,数值小于1的前面的0可以省略。
- 没有边框的时候写border:none
- 减少使用低性能的选择器,比如标签,*,多层
- 除了颜色以及字体外,所有的代码小写,如果有引号使用单引号
- 字体名称请映射成对应的英文名
- 背景图片请合理使用csssprites,按照模块、业务、页面来划分均可
- css背景图片的文件类型,请按照以下原则来保存:如果背景图片有动画,则保存成gif,如果没有动画,也没有半透明效果,则保存成png-8,如果有半透明效果,则保存成png-24
- 清除浮动采用样式,不使用增加空标签的方式
- 避免过小的背景图片平铺
- 减少使用important
-
编写顺序
显示属性
display/list-style/position/float/clear- 盒子模型
width/height/margin/padding/border - 背景
background - 行高 文本属性其他
line-height,color/font/text-decoration/text-align/,
text-indent/vertical-align/white-space/content,
cursor/z-index/zoom - css3属性
transform/transition/animation/box-shadow/border-radius - 链接的样式请严格按照如下顺序添加
a:link -> a:visited -> a:hover -> a:active注释规范
注释长度要求:注释中的每一行长度不超过40个汉字,或者80个英文字符
- 文件顶部注释 ```css /*
- @description: xxxxx中文说明
- @author: zhifu.wang
- @update: zhifu.wang (2012-10-17 18:32) */ ```
模块注释,模块注释必须单独写在一行
/* module: module1 by zhifu.wang */
单行注释,单行注释可以写在单独一行,也可以写在行尾
/* this is a short comment */
多行注释 :多行注释必须写在单独行内 ```css /*
- this is comment line 1.
- this is comment line 2. */ ```
特殊注释 :用于标注修改、待办等信息
/* TODO: xxxx by zhifu.wang 2012-10-18 18:32 */
/* BUGFIX: xxxx by zhifu.wang 2012-10-18 18:32 */
浏览器hack
浏览器的hack :能少用就少用hack ,浏览器的hack如下,注意按照一定的顺序书写:
-webkit-,-moz-,-o-,-ms-,通用的,针对ie不同版本的,归纳如下:IE6 _property: value
IE7 +property: value
IE6/7 *property: value
IE6/7/8/9 property: value\9
其他
- 阿里前端九部css代码规范链接