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的形式來下降後代選擇器的污染性。