BEM命名法,其實(shí)很簡(jiǎn)單

參考文獻(xiàn):http://www.ibm.com/developerworks/cn/web/1512_chengfu_bem/
http://www.oschina.net/translate/thoughtful-css-architecture

BEM的本質(zhì)是一個(gè)css類名命名方案辖众。由于CSS沒(méi)有作用域的概念椅您,也不像SCSS那樣可以寫出層級(jí)關(guān)系尚氛,所以,如果有兩個(gè)類名讹弯,比如.nav和li况既,雖然你知道li在.nav中,你也可以寫出.nav li {}這樣的選擇器组民,但是很多情況下我們還是希望給li專門設(shè)一個(gè)類名棒仍,這時(shí)候BEM就是一個(gè)好的方案。

BEM規(guī)范詳解

所謂BEM臭胜,其實(shí)是三個(gè)單詞的縮寫:Block(模塊)莫其、Element(元素)癞尚、Modifier(修飾符)。

1.Block(模塊)

一個(gè)模塊是一個(gè)獨(dú)立的實(shí)體部分乱陡,就像應(yīng)用的一塊“積木”否纬。一個(gè)模塊既可以是簡(jiǎn)單的也可以是復(fù)合的(包含其他模塊)。

命名規(guī)范:

模塊名稱可以由拉丁字母蛋褥,數(shù)字和短劃線組成临燃。 如:.block、.form

比如搜索框和按鈕組成的組件就是一個(gè)模塊烙心。

我認(rèn)為的命名的最佳實(shí)踐是:.xxoo膜廊,也就是用兩個(gè)詞組成的詞組來(lái)描述這個(gè)塊,比如.propertyeditor或.languageswitcher淫茵,前者意思是屬性編輯器爪瓜,后者是語(yǔ)言切換器。強(qiáng)行用一個(gè)詞來(lái)描述的話匙瘪,你會(huì)發(fā)現(xiàn)詞根本不夠用铆铆。

B和M可以直接連用,跳過(guò)E丹喻,這是允許的薄货。

2.Element(元素)

一個(gè)元素是塊的一部分,具有某種功能碍论。元素是依賴上下文的:它們只有處于他們應(yīng)該屬于的塊的上下文中時(shí)才是有意義的谅猾。

比如,.form的input元素和button元素都是元素鳍悠。

命名規(guī)范:

元素名稱可以包含拉丁字母税娜,數(shù)字,破折號(hào)和下劃線藏研。 CSS類名寫成塊名稱加破折號(hào)加上元素名稱:.block-elem敬矩,其中elem可以是直接元素標(biāo)簽名,也是表義的名稱蠢挡。

我認(rèn)為的最佳實(shí)踐是:比如對(duì)話框內(nèi)有一個(gè)確定按鈕弧岳,這個(gè)確定按鈕的類名可以是:.alert-modal__button--done,其中done是修飾符袒哥,表示是“表確定的那個(gè)按鈕”缩筛。修飾符在下面講。

3.Modifier(修飾符)

修飾符是塊或元素上的標(biāo)志堡称。這些標(biāo)志用來(lái)形容元素或塊的外觀瞎抛、行為或狀態(tài)。例如button却紧、a標(biāo)簽上的active狀態(tài)桐臊。

命名規(guī)范:

修飾符名稱可以包含拉丁字母胎撤,數(shù)字,破折號(hào)和下劃線断凶。 CSS類名寫成模塊或元素的名稱加上兩個(gè)破折號(hào):.block--mod或.block__elem--mod和.block--color-black伤提。

示例:

.form__submit--disabled

我認(rèn)為的最佳實(shí)踐是:比如對(duì)話框內(nèi)有一個(gè)確定按鈕,這個(gè)確定按鈕的類名可以是:.alertmodal__button--done认烁,其中done是修飾符肿男,表示是“表確定的那個(gè)按鈕”。

小結(jié):

從上面的實(shí)例中却嗡,我們不難發(fā)現(xiàn)BEM有以下特點(diǎn):

  • 復(fù)雜的類名極大減少了類名重復(fù)的可能性舶沛。
  • 每個(gè)塊里的一類元素的樣式對(duì)應(yīng)一個(gè)類名。如此窗价,一類元素對(duì)應(yīng)一個(gè)類名如庭,減少了子選擇器或后代選擇器的使用,提升了css的性能撼港。
  • css類名的命名更加語(yǔ)義化坪它,更容易讀懂。
  • 可復(fù)用性高帝牡,例如我們可以把主題類名.form__theme--xmas替換往毡,即可對(duì)應(yīng)替換為別的主題樣式。

靈活運(yùn)用:

BEM的精華是B否灾、E卖擅、M,中間用幾個(gè)連接符都是小事墨技,一般單個(gè)中劃線就可以了,但是挎狸,最常見(jiàn)的連接符是bb__ee--mm的形式扣汪,盡量遵守這種形式,當(dāng)你遇到其他人寫的規(guī)范的css文檔的時(shí)候锨匆,可以降低閱讀難度崭别。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市恐锣,隨后出現(xiàn)的幾起案子茅主,更是在濱河造成了極大的恐慌,老刑警劉巖土榴,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诀姚,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡玷禽,警方通過(guò)查閱死者的電腦和手機(jī)赫段,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門呀打,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人糯笙,你說(shuō)我怎么就攤上這事贬丛。” “怎么了给涕?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵豺憔,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我够庙,道長(zhǎng)焕阿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任首启,我火速辦了婚禮暮屡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘毅桃。我一直安慰自己褒纲,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布钥飞。 她就那樣靜靜地躺著莺掠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪读宙。 梳的紋絲不亂的頭發(fā)上彻秆,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音结闸,去河邊找鬼唇兑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛桦锄,可吹牛的內(nèi)容都是我干的扎附。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼结耀,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼留夜!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起图甜,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤碍粥,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后黑毅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嚼摩,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了低斋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜂厅。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖膊畴,靈堂內(nèi)的尸體忽然破棺而出掘猿,到底是詐尸還是另有隱情,我是刑警寧澤唇跨,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布稠通,位于F島的核電站,受9級(jí)特大地震影響买猖,放射性物質(zhì)發(fā)生泄漏改橘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一玉控、第九天 我趴在偏房一處隱蔽的房頂上張望飞主。 院中可真熱鬧,春花似錦高诺、人聲如沸碌识。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)筏餐。三九已至,卻和暖如春牡拇,著一層夾襖步出監(jiān)牢的瞬間魁瞪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工惠呼, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留导俘,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓罢杉,卻偏偏與公主長(zhǎng)得像趟畏,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子滩租,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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

  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,737評(píng)論 1 92
  • BEM 是對(duì) CSS 命名的一種規(guī)范利朵,推崇將 WEB 頁(yè)面模塊化律想,從而提高代碼的重用度,減少后期維護(hù)的成本绍弟。原文 ...
    Jadyn閱讀 5,866評(píng)論 0 12
  • 原文 命名約定 若是使用 BEM 實(shí)體技即,就需要了解它的命名規(guī)則。 命名約定的理念就是使得 CSS 選擇器的命名盡可...
    Jadyn閱讀 2,832評(píng)論 0 0
  • 1.定義# 用原型實(shí)例指定創(chuàng)建對(duì)象的種類樟遣,并且通過(guò)拷貝這些原型創(chuàng)建新的對(duì)象而叼。在JAVA中通過(guò)繼承Clonealbe...
    tdeblog閱讀 272評(píng)論 0 0
  • 我種了一棵小辣椒身笤, 它綠油油, 開出了穿著白色裙子的小花葵陵, 結(jié)出了綠色的果實(shí)液荸。 慢慢的, 綠果實(shí)變成了紅辣椒脱篙, 切...
    抽風(fēng)一刻閱讀 272評(píng)論 2 2