可擴(kuò)展窒升、模塊化CSS--應(yīng)用性深度(翻譯文)

SMACSS is becoming one of the most useful contributions to front-end discussions in years

當(dāng)我們學(xué)習(xí)到css的內(nèi)在運(yùn)作時(shí),我們知道是通過選擇器來選擇html的元素的慕匠。隨著css的不斷發(fā)展饱须,我們用到的選擇器如今已是很多。我們沒添加一個(gè)樣式台谊,就意味著csshtml的聯(lián)系更多蓉媳。

讓我們看看典型的一個(gè)css中塊的例子。

我們?nèi)绾尉o密結(jié)合我們的CSS,HTML呢?
#sidebar div {
    border: 1px solid #333;
}

#sidebar div h3 { 
    margin-top: 5px;
}

#sidebar div ul {
    margin-bottom: 5px; 
} 

我們看看以上代碼青伤,大概就能知道這個(gè)頁面大致結(jié)構(gòu)督怜。它有側(cè)邊欄,有超過1個(gè)章節(jié)的內(nèi)容狠角,有無序列等等号杠。如果這個(gè)網(wǎng)址長(zhǎng)時(shí)間沒有變化,這個(gè)樣式就是成功的。像我的博客網(wǎng)站就是這樣的姨蟋。但是在一個(gè)大型網(wǎng)站里頭屉凯,這樣做,無疑阻礙了樣式復(fù)用眼溶,維護(hù)起來是個(gè)噩夢(mèng)悠砚。
那么我們錯(cuò)在哪里了呢?

1.我們的樣式太過依賴html的節(jié)點(diǎn)結(jié)構(gòu)堂飞。
2.樣式的使用選擇器深度太多了灌旧。

縮小深度

Html是樹形結(jié)構(gòu)的,它有父節(jié)點(diǎn)和子節(jié)點(diǎn)之分绰筛。各層各代向聯(lián)枢泰。比如body.article > #main > #content > #intro > p > b,它因?yàn)橛?代所以有6個(gè)應(yīng)用深度铝噩。.article #intro b這樣寫同樣也會(huì)6個(gè)深度衡蚂。
這種高度依賴Html結(jié)構(gòu)的情況給我們復(fù)用樣式帶來了極大的挑戰(zhàn),比如回到剛剛側(cè)邊欄的例子里頭骏庸,如果要新建一個(gè)頁尾的樣式毛甲,我們是不是應(yīng)該對(duì)側(cè)邊欄的那些樣式復(fù)制一遍呢?

#sidebar div, #footer div {
    border: 1px solid #333;
}

#sidebar div h3, #footer div h3 { 
    margin-top: 5px;
}

#sidebar div ul, #footer div ul {
    margin-bottom: 5px; 
} 

這里的根節(jié)點(diǎn)其實(shí)是div,所以我們這樣寫:

.pod {
    border: 1px solid #333;
}

.pod > h3 { 
    margin-top: 5px;
}

.pod > ul {
    margin-bottom: 5px; 
} 

這樣做具被,很顯然深度縮小了玻募,即使它依然是依然Html結(jié)構(gòu)的。同時(shí)這樣做也有利于復(fù)用到其他地方硬猫。當(dāng)然补箍,我們應(yīng)該盡可能的避免各個(gè)段落都在用class
這樣做可以讓這個(gè)樣式模塊形成一種模板,至于內(nèi)容隨意變更啸蜜。比如坑雅,雅虎中的Mustache模板。

<div class="pod">
    <h3>{{heading}}</h3>
    <ul>
        {{#items}}
        <li>{{item}}</li>
        {{/items}}
    </ul>
</div> 

很多時(shí)候衬横,我們?cè)趯懘a是要考慮維護(hù)成本裹粤,可讀性,代碼性能等等蜂林。還有一個(gè)我們要不要盡可能的給標(biāo)簽加上class遥诉。如果你不是非得讓元素變得靈活,加class是沒有必要的噪叙。
我們隊(duì)最后一個(gè)例子進(jìn)行深化研究矮锈。如果模塊中除了ul,還有ol,div之類的呢?我們可以這樣寫:

.pod > ul, .pod > ol, .pod > div {
    margin-bottom: 5px; 
} 

也可加class

class簡(jiǎn)化了樣式書寫
.pod-body {
    margin-bottom: 5px; 
} 

所以Html就是這樣的:

An example Mustache template
<div class="pod">
    <h3>{{heading}}</h3>
    <ul class="pod-body">
        {{#items}}
        <li>{{item}}</li>
        {{/items}}
    </ul>
</div> 

這個(gè)例子里加上class可以讓深度的縮小,同時(shí)單個(gè)選擇器也會(huì)避免潛在的'特殊樣式'的問題(所謂特殊樣式是指睁蕾,這個(gè)樣式專屬于模塊模塊或者布局)苞笨。
原文地址:https://smacss.com/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末债朵,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子瀑凝,更是在濱河造成了極大的恐慌序芦,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,331評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粤咪,死亡現(xiàn)場(chǎng)離奇詭異谚中,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)寥枝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門宪塔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人脉顿,你說我怎么就攤上這事蝌麸。” “怎么了艾疟?”我有些...
    開封第一講書人閱讀 167,755評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)敢辩。 經(jīng)常有香客問我蔽莱,道長(zhǎng),這世上最難降的妖魔是什么戚长? 我笑而不...
    開封第一講書人閱讀 59,528評(píng)論 1 296
  • 正文 為了忘掉前任盗冷,我火速辦了婚禮,結(jié)果婚禮上同廉,老公的妹妹穿的比我還像新娘仪糖。我一直安慰自己,他們只是感情好迫肖,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,526評(píng)論 6 397
  • 文/花漫 我一把揭開白布锅劝。 她就那樣靜靜地躺著,像睡著了一般蟆湖。 火紅的嫁衣襯著肌膚如雪故爵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,166評(píng)論 1 308
  • 那天隅津,我揣著相機(jī)與錄音诬垂,去河邊找鬼。 笑死伦仍,一個(gè)胖子當(dāng)著我的面吹牛结窘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播充蓝,決...
    沈念sama閱讀 40,768評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼隧枫,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起悠垛,我...
    開封第一講書人閱讀 39,664評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤线定,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后确买,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體斤讥,經(jīng)...
    沈念sama閱讀 46,205評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,290評(píng)論 3 340
  • 正文 我和宋清朗相戀三年湾趾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了芭商。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,435評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡搀缠,死狀恐怖铛楣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情艺普,我是刑警寧澤簸州,帶...
    沈念sama閱讀 36,126評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站歧譬,受9級(jí)特大地震影響岸浑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瑰步,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,804評(píng)論 3 333
  • 文/蒙蒙 一矢洲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧缩焦,春花似錦读虏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至呻拌,卻和暖如春葱轩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背藐握。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來泰國打工靴拱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人猾普。 一個(gè)月前我還...
    沈念sama閱讀 48,818評(píng)論 3 376
  • 正文 我出身青樓袜炕,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親初家。 傳聞我的和親對(duì)象是個(gè)殘疾皇子偎窘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,442評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 模塊化是現(xiàn)今我們隨處都可以聽到的一個(gè)名詞乌助,什么是模塊化?為什么我們需要模塊化陌知?這是本系列文章我們要弄明白的一個(gè)問題...
    Jack_Lo閱讀 10,062評(píng)論 16 62
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案他托? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,758評(píng)論 1 92
  • 版本記錄 前言 OpenGL ES圖形庫項(xiàng)目中一直也沒用過,最近也想學(xué)著使用這個(gè)圖形庫仆葡,感覺還是很有意思赏参,也就自然...
    刀客傳奇閱讀 517評(píng)論 0 0
  • 是你教會(huì)我, 聽懂了所有的情歌沿盅, 看懂了所有的情話把篓, 讀懂了所有的情書。
    知微素問閱讀 150評(píng)論 0 0
  • 今日去拜訪朋友,出發(fā)時(shí)煙雨蒙蒙窖铡,零零星星的小雨打濕了我的發(fā)梢疗锐,于是,撐起一把雨傘万伤,悠閑地漫步在街頭窒悔。朋友老公是一所...
    清淺光陰閱讀 398評(píng)論 0 0