|
坦率的說,我寫CSS時,有至少1/4的時間是在糾結(jié)選擇符該如何命名。隨意的命名,會讓你陷入尷尬。
舉個例子,我們需要在一段文字里將某些詞標紅。所以為此建了一個.red { color: red; }。結(jié)果產(chǎn)品經(jīng)理覺得,紅色太刺眼了,改成橘色比較好吧。這下頭大啦,難道寫成.red { color: orange; }么?要不然就是把HTML里的每個class="red"改成class="orange"?
在過去幾年時間里,我經(jīng)常遇到這樣的尷尬。因此作為一些經(jīng)驗之談,我整理出以下的幾個命名原則:
原則一:CSS選擇符命名應該體現(xiàn)結(jié)構(gòu)而不是樣式。
這句話聽起來很奇怪。這樣不是違反了結(jié)構(gòu)和樣式分離的原則么?恰恰相反,其實正是遵循分離原則。要知道,CSS選擇符名真正的用處是在HTML代碼里修飾標簽。所以它其實應該被看作結(jié)構(gòu)的一部分。因此選擇符的名字不可以跟樣式有關(guān)。 我開頭將的那個例子,就是違反這一原則典型。正確的寫法,應該是.highlight { color: red; },或者索性就用em { color: red; font-style:normal; }。 同理,我盡量避免用帶有l(wèi)eft、right、顏色、bold等字眼的名字,總而言之,那些可以被作為CSS屬性值的名字,都盡量少用作名字。 有時候,我們會遇到另一種情況。有一個很常見的布局:標題放在區(qū)塊的左上方,而右上方是一個“查看更多”的鏈接。所以我們會用這樣的代碼
<h2> <span><a href="#">查看更多</a></span> 精彩貼圖 </h2>
自然,會有相應的樣式:
h2 span {float:right;}
但是這樣做其實很危險。如果我們要求給標題后再加一個副標題(比如“超過1000萬精美圖片”之類的惡俗標語),就沒法再用span了。用strong或是em,其實感覺怪怪的。
原則二:不要輕易將特殊樣式直接賦給常用的HTML標簽
上面那個例子的問題就在于,輕易的將樣式應用在span這種常用的標簽上了。h2 span這種選擇符,意味著你認為h2里所有的span都要使用右浮動。但是這樣的判斷顯然是很武斷的。
另一個例子是,喜歡用ul.top10 li這種選擇符。這樣用并非不可,但請先確保這個排行榜里只是純文字。倘若有一天產(chǎn)品經(jīng)理發(fā)現(xiàn),似乎應該把前三個的信息寫得更詳細,就意味著你可能需要用到下面這種結(jié)構(gòu):
<ul class="top"> <li> <div class="product"> <h6>產(chǎn)品名稱</h6> <ul> <li>型號:XXX</li> ... </ul> <div> </li> </ul>
這下又傻眼了吧。只能用.top20 .product li {}去覆蓋掉之前的樣式。 我比較傾向的寫法,是如 ul.top20 li.item這樣寫。(當然,CSS2準備了更多更精準的后代選擇器,就犯不著這個了。等待IE8吧~~)
原則三:設(shè)計好一系列的“全局保留字”,以避免命名沖突
一些常用的單詞,就不要用作特殊樣式的名字。比如,我們會經(jīng)常用到如下的選擇符:
.tab li.current 或者 .nav li.current
以表示當前激活的標簽或選項。很多樣式都會用到“current”這個單詞,為了避免彼此的樣式?jīng)_突,有一個很簡單的辦法,就是人為商定,單純的.current樣式不作任何定義。換句話說,current這個名字只能出現(xiàn)在精確的后代選擇符中。 類似的還有:
“.active”:和current差不多,有人也喜歡用這個 “.first”:經(jīng)常在如“ 選項 選項 選項”的結(jié)構(gòu)中用到 “.last”:在田字格布局中可能會用到 “.hover”:有時候需要用這個樣式結(jié)合JS實現(xiàn)一些效果 “.text”、“.button”、“.submit”等:在屬性選擇器普及前,input標簽的樣式都靠它們了。
原則四:英文要正確
哎,這只能怪計算機是美國人發(fā)明的了。有時候會看到一些奇怪的選擇符名。我解釋一些常用單詞的含義:
header,footer: 這兩個的意思是指“頭部”和“底部”,更確切點講是“頁頭”和“頁尾”。
heading,footing: |
|
【收藏】【打印】【進入論壇】 |
|
|
|
|
|
|
|