CSS文件的分类和引用顺序css
一般,一个项目咱们只引用一个CSS,可是对于较大的项目,咱们须要把CSS文件进行分类。html
咱们按照CSS的性质和用途,将CSS文件分红“公共型样式”、“特殊型样式”、“皮肤型样式”,并以此顺序引用(按需求决定是否添加版本号)。web
1 <link href="assets/css/global.css" rel="stylesheet" type="text/css"/> 2 <link href="assets/css/index.css" rel="stylesheet" type="text/css"/> 3 <link href="assets/css/skin.css" rel="stylesheet" type="text/css"/>
CSS内部的分类及其顺序浏览器
1 /* 重置 */ 2 div,p,ul,ol,li{margin:0;padding:0;} 3 /* 默认 */ 4 strong,em{font-style:normal;font-weight:bold;} 5 /* 统一调用背景图 */ 6 .m-logo a,.m-nav a,.m-nav em{background:url(images/sprite.png) no-repeat 9999px 9999px;} 7 /* 统一清除浮动 */ 8 .g-bdc:after,.m-dimg ul:after,.u-tab:after{display:block;visibility:hidden;clear:both;height:0;overflow:hidden;content:'.';} 9 .g-bdc,.m-dimg ul,.u-tab{zoom:1;} 10 /* 布局 */ 11 .g-sd{float:left;width:300px;} 12 /* 模块 */ 13 .m-logo{width:200px;height:50px;} 14 /* 元件 */ 15 .u-btn{height:20px;border:1px solid #333;} 16 /* 功能 */ 17 .f-tac{text-align:center;} 18 /* 皮肤 */ 19 .s-fc,a.s-fc:hover{color:#fff;}
使用类选择器,放弃ID选择器ide
ID在一个页面中的惟一性致使了若是以ID为选择器来写CSS,就没法重用。布局
NEC特殊字符:"-"连字符网站
"-"在本规范中并不表示连字符的含义。url
她只表示两种含义:分类前缀分隔符、扩展分隔符,详见如下具体规则。spa
分类的命名方法:使用单个字母+"-"为前缀.net
布局(grid)(.g-);模块(module)(.m-);元件(unit)(.u-);功能(function)(.f-);皮肤(skin)(.s-);状态(.z-)。
对以上的解释详情参见:分类方法中的“CSS内部的分类及其顺序”。
注:在你样式中的选择器老是要以上面前五类开头,而后在里面使用后代选择器。
若是这五类不能知足你的需求,你能够另外定义一个或多个大类,但必须符合单个字母+"-"为前缀的命名规则,即 .x- 的格式。
特殊:.j-将被专用于JS获取节点,请勿使用.j-定义样式。
后代选择器命名
经过使用后代选择器的方法,你不须要考虑他的命名是否已被使用,由于他只在当前模块或元件中生效,一样的样式名能够在不一样的模块或元件中重复使用,互不干扰;在多人协做或者分模块协做的时候效果尤其明显!
后代选择器不须要完整表现结构树层级,尽可能能短则短。
注:后代选择器不要在页面布局中使用,由于污染的可能性较大;
/* 这里的.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;}
命名应简约而不失语义
/* 反对:表现化的或没有语义的命名 */ .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,这样就和大类的命名规范冲突。
分组选择器有时能够代替扩展方法
有时候虽然两个同类型的模块很类似,可是你但愿他们之间不要有依赖关系,也就是说你不但愿使用扩展的方法,那么你能够经过合并选择器来设置共性的样式。
使用本方法的前提是:相同类型、功能和外观都类似,写在同一片代码区域方便维护。
/* 两个元件共性的样式 */ .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的形式来下降后代选择器的污染性。
选择器、属性和值都使用小写
在xhtml标准中规定了全部标签、属性和值都小写,CSS也是如此。
单行写完一个选择器定义
便于选择器的寻找和阅读,也便于插入新选择器和编辑,便于模块等的识别。去除多余空格,使代码紧凑减小换行。
若是有嵌套定义,能够采起内部单行的形式。
/* 单行定义一个选择器 */ .m-list li,.m-list h3{width:100px;padding:10px;border:1px solid #ddd;} /* 这是一个有嵌套定义的选择器 */ @media all and (max-width:600px){ .m-class1 .itm{height:17px;line-height:17px;font-size:12px;} .m-class2 .itm{width:100px;overflow:hidden;} } @-webkit-keyframes showitm{ 0%{height:0;opacity:0;} 100%{height:100px;opacity:1;} }
最后一个值也以分号结尾
一般在大括号结束前的值能够省略分号,可是这样作会对修改、添加和维护工做带来没必要要的失误和麻烦。
省略值为0时的单位
为节省没必要要的字节同时也使阅读方便,咱们将0px、0em、0%等值缩写为0。
1 .m-box{margin:0 10px;background-position:50% 0;}
使用单引号
省略url引用中的引号,其余须要引号的地方使用单引号。
1 .m-box{background:url(bg.png);} 2 .m-box:after{content:'.';}
使用16进制表示颜色值
除非你须要透明度而使用rgba,不然都使用#f0f0f0这样的表示方法,并尽可能缩写。
1 .m-box{color:#f00;background:rgba(0,0,0,0.5);}
根据属性的重要性按顺序书写
只遵循横向顺序便可,先显示定位布局类属性,后盒模型等自身属性,最后是文本类及修饰类属性。
→ | 显示属性 | 自身属性 | 文本属性和其余修饰 |
---|---|---|---|
display | width | font | |
visibility | height | text-align | |
position | margin | text-decoration | |
float | padding | vertical-align | |
clear | border | white-space | |
list-style | overflow | color | |
top | min-width | background |
1 .m-box{position:relative;width:600px;margin:0 auto 10px;text-align:center;color:#000;}