ID在一个页面中的惟一性致使了若是以ID为选择器来写CSS,就没法重用。 浏览器
NEC特殊字符:"-"连字符"-"在本规范中并不表示连字符的含义。 ide
她只表示两种含义:分类前缀分隔符、扩展分隔符,详见如下具体规则。 布局
分类的命名方法:使用单个字母+"-"为前缀布局(grid)(.g-);模块(module)(.m-);元件(unit)(.u-);功能(function)(.f-); 网站
皮肤(skin)(.s-);状态(.z-)。 spa
注:在你样式中的选择器老是要以上面前五类开头,而后在里面使用后代选择器。 ip
若是这五类不能知足你的需求,你能够另外定义一个或多个大类,但必须符合单个字母+"-"为前缀的命名规则,即 .x- 的格式。 ci
特殊:.j-将被专用于JS获取节点,请勿使用.j-定义样式。 页面布局
后代选择器命名经过使用后代选择器的方法,你不须要考虑他的命名是否已被使用,由于他只在当前模块或元件中生效,一样的样式名能够在不一样的模块或元件中重复使用,互不干扰;在多人协做或者分模块协做的时候效果尤其明显! it
后代选择器不须要完整表现结构树层级,尽可能能短则短。 io
注:后代选择器不要在页面布局中使用,由于污染的可能性较大;
1
2
3
4
5
6
7
8
|
/* 这里的.itm和.cnt只在.m-list中有效 */
.m-list{margin:0;padding:0;}
.m-list .itm{margin:1px;padding:1px;}
.m-list .cnt{margin-left:100px;}
/* 这里的.cnt和.num只在.m-page中有效 */
.m-page{height:20px;}
.m-page .cnt{text-align:center;}
.m-page .num{border:1px solid #ddd;}
|
1
2
3
4
5
6
|
/* 反对:表现化的或没有语义的命名 */
.m-abc .green2{}
.g-left2{}
/* 推荐:使用有语义的简短的命名 */
.m-list .wrap2{}
.g-side2{}
|
方法:直接加数字或字母区分便可(如:.m-list、.m-list二、.m-list3等,都是列表模块,可是是彻底不同的模块)。
其余举例:.f-fw0、.f-fw一、.s-fc0、.s-fc一、.m-logo二、.m-logo三、u-btn、u-btn2等等。
模块和元件的扩展类的命名方法当A、B、C、...它们类型相同且外形类似区别不大,那么就以它们中出现率最高的作成基类,其余作成基类的扩展。
方法:+“-”+数字或字母(如:.m-list的扩展类为.m-list-一、.m-list-2等)。
补充:基类自身能够独立使用(如:class="m-list"便可),扩展类必须基于基类使用(如:class="m-list m-list-2")。
若是你的扩展类是表示不一样状态,那么你能够这样命名:u-btn-dis,u-btn-hov,m-box-sel,m-box-hov等等,而后像这样使用:class="u-btn u-btn-dis"。
若是你的网站能够不兼容IE6等浏览器,那么你标识状态的方法也能够采起独立状态分类(.z-)方法:.u-btn.z-dis,.m-box.z-sel,而后像这样使用:class="u-btn z-dis"。
模块和元件的后代选择器的扩展类有时候模块内会有些相似的东西,若是你没有把它们作成元件和扩展,那么也可使用后代选择器和扩展。
后代选择器:.m-login .btn{}。
后代选择器扩展:.m-login .btn-1{},.m-login .btn-dis{}。
一样也能够采起独立状态分类(.z-)方法:.m-login .btn.z-dis{},而后像这样使用:class="btn z-dis"。
注:此方法用于类选择器,直接使用标签作为选择器的则不须要使用此命名方法。
注:为防止后代选择器的扩展类和大类命名规范冲突,后代选择器不容许使用单个字母。
好比:.m-list .a{}是不容许的,由于当这个.a须要扩展的时候就会变成.a-bb,这样就和大类的命名规范冲突。
分组选择器有时能够代替扩展方法有时候虽然两个同类型的模块很类似,可是你但愿他们之间不要有依赖关系,也就是说你不但愿使用扩展的方法,那么你能够经过合并选择器来设置共性的样式。
使用本方法的前提是:相同类型、功能和外观都类似,写在同一片代码区域方便维护。
1
2
3
4
5
6
7
8
9
10
|
/* 两个元件共性的样式 */
.u-tip1,.u-tip2{}
.u-tip1 .itm,.u-tip2 .itm{}
/* 在分别是两个元件各自的样式 */
/* tip1 */
.u-tip1{}
.u-tip1 .itm{}
/* tip2 */
.u-tip2{}
.u-tip2 .itm{}
|
当模块或元件之间互相嵌套,且使用了相同的标签选择器或其余后代选择器,那么里面的选择器就会被外面相同的选择器所影响。
因此,若是你的模块或元件可能嵌套或被嵌套于其余模块或元件,那么要慎用标签选择器,必要时采用类选择器,并注意命名方式,能够采用.m-layer .layerxxx、.m-list2 .list2xxx的形式来下降后代选择器的污染性。