CSS命名規(guī)范之BEM-源自Yandex的CSS命名方法論

BEM即塊(Block)、元素(Element)蜜徽、修飾符(modifier)腋么,是由著名的俄羅斯搜索引擎團(tuán)隊(duì)Yandex提出的一種前端命名方法論。BEM命名約定更加嚴(yán)格腾么,而且包含更多的信息奈梳,一般用于團(tuán)隊(duì)開發(fā)一個(gè)耗時(shí)的大項(xiàng)目中。

我們常見的BEM命名方式一般都是經(jīng)過改良的解虱,本文介紹的是Nicolas Gallagher(Twitter前端工程師)的改進(jìn)版攘须。

命名約定的格式如下:

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

之所以使用兩個(gè)連字符和下劃線而不是一個(gè)殴泰,是為了讓自己定義的塊可以用單個(gè)連字符來界定于宙,如:

.myHeader-search{...}/* 自定義的某個(gè)塊 */.myHeader-search__textElement{...}/* 自定義塊中的textElement元素 */.myHeader-search--full{...}/* 自定義塊中的full修飾符 */

BEM的關(guān)鍵在于,光憑名字就可以告訴其他開發(fā)者某個(gè)標(biāo)記(class)是用來干什么的艰匙。通過直觀地閱讀class屬性限煞,我們就能明白模塊之間是如何關(guān)聯(lián)的:有一些僅僅是組件,有一些則是這些組件的子孫或者元素员凝,還有一些是組件其他形態(tài)或者是修飾符署驻。我們通過下面的示例來進(jìn)一步說明:

? ? ? ?
? ? ? ?

上面的代碼使用了常規(guī)CSS來表示,各個(gè)class都是有意義的健霹,但是他們之間卻是脫節(jié)的旺上,拿female來說,是指女性人類還是指某種雌性的動物糖埋?hand是在表示指針(英文hand有鐘表指針的含義)還是一只正在玩指紙牌的手呢宣吱?使用BEM我們可以獲得更多的描述和更加清晰的結(jié)構(gòu),并且通過命名我們就可以知道元素之間的關(guān)聯(lián)瞳别。代碼如下:

? ? ? ?
? ? ? ?

再看一個(gè)常規(guī)方式命名的例子:

? ? ? ?

上面的命名不好的地方就在于名稱不夠精確征候,不能告訴我們足夠的信息杭攻。盡管我們可以用它們完成工作,但它們確實(shí)非常含糊不清疤坝,不夠優(yōu)雅兆解。使用BEM記號法后就是下面的代碼:

? ? ? ? ? ?

在上面的代碼中,我們可以清晰地看到有個(gè)叫.site-search的塊跑揉,內(nèi)部有個(gè)叫做.site-search__field的元素锅睛,并且site-search還有另一種形態(tài)叫做.site-search–full

通常人們會認(rèn)為BEM這種寫法難看。但是历谍,如果僅僅認(rèn)為這種寫法看上去不怎么好看而羞于使用现拒,那么我們將錯(cuò)失最重要的東西。

BEM看上去有些怪怪的望侈,但是它的好處遠(yuǎn)遠(yuǎn)超過外觀上的瑕疵

BEM有可能導(dǎo)致輸入更長的文本印蔬,但是大部分編輯器都有代碼自動補(bǔ)全的功能,而且gzip壓縮將會讓我們消除對文件體積的擔(dān)憂

BEM命名規(guī)則:http://segmentfault.com/a/1190000000391762

class命名方案:http://www.w3cplus.com/css/css-class-name.html

常用的CSS命名規(guī)范:http://www.html5cn.org/article-7600-1.html

通用CSS筆記甜无、建議與指導(dǎo):https://github.com/chadluo/CSS-Guidelines/blob/master/README.md

CSS代碼重構(gòu)和優(yōu)化之路:http://luopq.com/2016/01/05/css-optimize/

CSS進(jìn)階:http://caibaojian.com/toutiao/6098


老九學(xué)堂出品扛点,轉(zhuǎn)載請私信哦

對于文章內(nèi)容有不理解的可以添加老九君個(gè)人QQ:614940318,請備注來自簡書

老九學(xué)堂免費(fèi)C岂丘、C++陵究、Java課程地址:

https://study.163.com/courses-search?keyword=%E8%80%81%E4%B9%9D%E5%AD%A6%E5%A0%82

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市奥帘,隨后出現(xiàn)的幾起案子铜邮,更是在濱河造成了極大的恐慌,老刑警劉巖寨蹋,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件松蒜,死亡現(xiàn)場離奇詭異,居然都是意外死亡已旧,警方通過查閱死者的電腦和手機(jī)秸苗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來运褪,“玉大人惊楼,你說我怎么就攤上這事〗斩铮” “怎么了檀咙?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長璃诀。 經(jīng)常有香客問我弧可,道長,這世上最難降的妖魔是什么劣欢? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任棕诵,我火速辦了婚禮裁良,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘校套。我一直安慰自己趴久,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布搔确。 她就那樣靜靜地躺著,像睡著了一般灭忠。 火紅的嫁衣襯著肌膚如雪膳算。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天弛作,我揣著相機(jī)與錄音涕蜂,去河邊找鬼。 笑死映琳,一個(gè)胖子當(dāng)著我的面吹牛机隙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播萨西,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼有鹿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了谎脯?” 一聲冷哼從身側(cè)響起葱跋,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎源梭,沒想到半個(gè)月后娱俺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡废麻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年荠卷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烛愧。...
    茶點(diǎn)故事閱讀 38,577評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡油宜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出屑彻,到底是詐尸還是另有隱情验庙,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布社牲,位于F島的核電站粪薛,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏搏恤。R本人自食惡果不足惜违寿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一湃交、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧藤巢,春花似錦搞莺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至绍刮,卻和暖如春温圆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背孩革。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工岁歉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人膝蜈。 一個(gè)月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓锅移,卻偏偏與公主長得像,于是被迫代替她去往敵國和親饱搏。 傳聞我的和親對象是個(gè)殘疾皇子非剃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評論 2 348

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