BEM(Block, Element, Modifier)是由Yandex團隊提出的一種前端命名規範。其核心思想是將頁面拆分紅一個個獨立的富有語義的塊(blocks),從而使得團隊在開發複雜的項目變得高效,而且十分有利於代碼複用,即使團隊引入新成員,也容易維護。前端
Block是塊,比方說div
、header
,能夠嵌套複用。更嚴格一點來講不能影響自身佈局,最好不要設置margin
和position
,也不要使用元素選擇器和ID選擇器。佈局
Element是元素,比方說input
、p
。是Block的組成部分。code
Modifier是修飾,定義Block和Element的外觀、狀態、或者行爲。固然這個部分並非必須的,能夠省略。ip
Block與Element之間經過__
來鏈接,Element與Modifier之間經過--
來鏈接開發
整體就是Block__Element--Modifierinput
若是一段代碼可能被重用,而且它不依賴於頁面中的其餘組件,這時就能夠使用Block,反之就能夠使用Element。it
推薦去看Aribnb地址。io