理解CSS命名規(guī)范--BEM

最近在寫博客主題的時(shí)候發(fā)現(xiàn)一個(gè)很嚴(yán)重的問題刨秆,由于css的命名并不是很規(guī)范行嗤,導(dǎo)致自己在后期修改的時(shí)候很是頭疼沈撞,有些樣式需要在瀏覽器中打開開發(fā)者工具去找肄方,很是無奈果善。所以決定在寫完主題之后學(xué)習(xí)下CSS命名規(guī)范中大名鼎鼎的BEM命名規(guī)范庭砍。

什么是BEM

BEM其實(shí)是塊(block)噪叙、元素(element)改基、修飾符(modifier)的縮寫阳液,利用不同的區(qū)塊怕敬,功能以及樣式來給元素命名。這三個(gè)部分使用__--連接(這里用兩個(gè)而不是一個(gè)是為了留下用于塊兒的命名)帘皿。命名約定的模式如下:

.block{}
.block__element{}
.block--modifier{}
  • block 代表了更高級(jí)別的抽象或組件
  • block__element 代表 block 的后代东跪,用于形成一個(gè)完整的 block 的整體
  • block--modifier代表 block 的不同狀態(tài)或不同版本
bem.png

上圖很直觀的反映出BEM的含義,block代表一個(gè)組鹰溜,而element代表組里面的成員虽填,而modifier,雖然在上圖沒有畫出曹动,但是可以知道這個(gè)則是用于描述每一個(gè)元素的具體的屬性斋日。可以看出范圍在一步步縮小墓陈,使命名更加具體恶守。

BEM的優(yōu)勢

BEM的關(guān)鍵是光憑class名字就可以讓其他開發(fā)者知道某個(gè)標(biāo)記用來做什么的第献,明白各個(gè)模塊之間的關(guān)系,例如如下的命名:

.nav{}
.nav__item{}
.nav--blue{}
.nav--item__hand{}

這幾個(gè)class名很明顯能看出各個(gè)塊兒的作用兔港,頂級(jí)快兒是nav庸毫,它有一些元素比如itemitem又有一些屬性押框,例如blue,但是如果寫成常規(guī)的css就會(huì)很難看得出它們的關(guān)系:

.nav{}
.item{}
.blue{}

雖然看每一個(gè)class名知道它們代表什么理逊,但是卻看不出它們之間的關(guān)系橡伞,這樣對(duì)比,很明顯能看出BEM命名的優(yōu)勢晋被。

再看一個(gè)更具體的例子兑徘,如果寫一個(gè)搜索模塊,按照常規(guī)羡洛,我們會(huì)寫出如下代碼:

<form class="site-search  full">
  <input type="text" class="field">
  <input type="Submit" value ="Search" class="button">
</form> 

但是如果時(shí)用BEM規(guī)范去寫挂脑,代碼如下:

<form class="site-search  site-search--full">
  <input type="text" class="site-search__field">
  <input type="Submit" value ="Search" class="site-search__button">
</form> 

對(duì)比一下不難發(fā)現(xiàn)使用BEM可以使我們的代碼可讀性更高。

BEM與SCSS

現(xiàn)在的開發(fā)很多時(shí)候都會(huì)用到SCSS欲侮,那么如果使用SCSS的嵌套寫B(tài)EM規(guī)范呢崭闲,在SCSS中可以使用@at-root

.block {
  @at-root #{&}__element {
  }
  @at-root #{&}--modifier {
  }
}
/*生成的css*/
.block {
}
.block__element {
}
.block--modifier {
}

非常的方便。

最后

在自己的博客主題項(xiàng)目中威蕉,因?yàn)槊碾S意導(dǎo)致后來再看樣式的時(shí)候都需要通過開發(fā)者工具去看具體這部分是做什么的刁俭,非常難受,所以想到應(yīng)該用一套規(guī)范約束一下命名韧涨,而BEM最為一個(gè)非常有用牍戚,強(qiáng)大的命名規(guī)范可以讓我們的代碼更容易閱讀和理解,也更容易控制虑粥,雖然這種命名方式看起來有點(diǎn)兒奇怪如孝,但是卻非常有用,非常值得學(xué)習(xí)娩贷。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末第晰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子彬祖,更是在濱河造成了極大的恐慌但荤,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涧至,死亡現(xiàn)場離奇詭異腹躁,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)南蓬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門纺非,熙熙樓的掌柜王于貴愁眉苦臉地迎上來哑了,“玉大人,你說我怎么就攤上這事烧颖∪踝螅” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵炕淮,是天一觀的道長拆火。 經(jīng)常有香客問我,道長涂圆,這世上最難降的妖魔是什么们镜? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮润歉,結(jié)果婚禮上模狭,老公的妹妹穿的比我還像新娘。我一直安慰自己踩衩,他們只是感情好嚼鹉,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著驱富,像睡著了一般锚赤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上褐鸥,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天宴树,我揣著相機(jī)與錄音,去河邊找鬼晶疼。 笑死酒贬,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的翠霍。 我是一名探鬼主播锭吨,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼寒匙!你這毒婦竟也來了零如?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤锄弱,失蹤者是張志新(化名)和其女友劉穎考蕾,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體会宪,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肖卧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了掸鹅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片塞帐。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拦赠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出葵姥,到底是詐尸還是另有隱情荷鼠,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布榔幸,位于F島的核電站允乐,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏削咆。R本人自食惡果不足惜牍疏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望态辛。 院中可真熱鬧麸澜,春花似錦挺尿、人聲如沸奏黑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽熟史。三九已至,卻和暖如春窄俏,著一層夾襖步出監(jiān)牢的瞬間蹂匹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來泰國打工凹蜈, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留限寞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓仰坦,卻偏偏與公主長得像履植,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子悄晃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

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