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