一直以來本身在對css命名都是比較混亂的,並無一個比較好的格式來命名,最近本身碰巧學習到了BEM命名規範,我想談談本身的理解以供本身來學習,同時也能夠和各位大佬一塊兒學習。
BEM是一個頗有用的方法能夠建立複用組件和前端代碼
有三個特性.css
BEM的簡介
BEM是一個強大而簡單的命名規範,使得代碼更容易讓人理解,容易和他人協做,容易擴展,更增強壯和明確,最重要的是嚴謹性。
BEM的命名規範可讓參與網站開發的人都使用同一個代碼庫使用用一種方法。html
<div class="header">
<div class="logo"></div>
<div class="search"></div>
</div>
複製代碼
Block能夠在頁面內任意的移動,也能夠在頁面之間或項目之間移動。
Block做爲獨立的實體來實現,使得在頁面上改變Block改變位置並讓其位置和外觀不改變的簡單。
複製代碼
元素的名稱用來描述它的目的
一個完整的元素結構block-name__element-name,塊名和元素名使用(__)雙下劃線分割。
複製代碼
<div class="weui-tabbar">
<div class="weui-tabbar__item">
<span>
<img src=" " alt="" class="weui-tabbar__icon">
</span>
<p class="weui-tabbar__label"></p>
</div>
</div>
複製代碼
-能夠在不改變元素的狀況下改變DOM結構<div class="weui-tabbar">
<div href="#" class="weui-tabbar__item">
<span>
<img src=" " alt="" class="weui-tabbar__icon">
</span>
</div>
<p class="weui-tabbar__label"></p>
</div>
複製代碼
-一個元素老是模塊的一部分,不能單獨的使用。以下weui-tabbar模塊裏面的p標籤元素放在模塊外,這是不正確的。<div class="weui-tabbar">
<div class="weui-tabbar__item">
<span>
<img src=" " alt="" class="weui-tabbar__icon">
</span>
</div>
</div>
<p class="weui-tabbar__label"></p>
複製代碼
-元素是可選擇的,不是全部模塊都必須擁有元素<!--當模塊weui-tabbar有一個focused的boolean類型的修飾符時-->
<div class="weui-tabbar weui-tabbar_focused">
當元素weui-tabbar__item有一個on類型的修飾符時
<div class="weui-tabbar__item weui-tabbar__item_on">
</div>
</div>
複製代碼
<!--當模塊weui-tabbar有一個值爲yes的test的修飾符時-->
<div class="weui-tabbar weui-tabbar_test_yes">
當元素weui-tabbar__item有一個yes的test的修飾符時
<div class="weui-tabbar__item weui-tabbar__item_test_yes">
</div>
</div>
複製代碼
-一個修飾符不能單獨的使用前端
一個修飾符不能脫離模塊或元素單獨的使用,一個修飾符應該改變一個實體的外觀,行爲或者狀態,而不是替換它。bash
<!--正確的方法-->
<div class="weui-tabbar">
<div class="weui-tabbar__item weui-tabbar__item_on">
</div>
<!--錯誤的使用-->
<div class="weui-tabbar">
<div class="weui-tabbar__item_on">
</div>
複製代碼
以上是我通過對BEM規範學習的一些理解,提供給一些也在學習BEM的菜鳥(我本身也是一個菜鳥)你們互相學習,有不少的不足之處但願你們指出。還有不少沒有學習到的東西,本身也會在將來的時間裏不斷學習來提升本身。工具