CSS命名方式=》BEM

时间:2016-11-04 20:04:53
原文地址:https://github.com/zhongxia245/blog/issues/48css

1、背景

挺早就据说过BEM了,也大概的知道怎么用,可是具体 BEM 指啥,具体有啥要求,还不是很清楚,而后今天就学习了下。前端

2、BEM(Block,Element,Modifier)

BEM的意思就是块(block)、元素(element)、修饰符(modifier),是由Yandex团队提出的一种前端命名方法论。这种巧妙的命名方法让你的CSS类对其余开发者来讲更加透明并且更有意义。BEM命名约定更加严格,并且包含更多的信息,它们用于一个团队开发一个耗时的大项目。git

重要的是要注意,我使用的基于BEM的命名方式是通过Nicolas Gallagher修改过的。这篇文章中介绍的这种命名技术并非原始的BEM,但倒是一个我更喜欢的改进版。不管实际使用了什么样的符号,它们其实都是基于一样的BEM原则。github

命名约定的模式以下:segmentfault

.block{}
.block__element{}
.block--modifier{}
  • .block 表明了更高级别的抽象或组件。
  • .block__element 表明.block的后代,用于造成一个完整的.block的总体。
  • .block--modifier表明.block的不一样状态或不一样版本。
    之因此使用两个连字符和下划线而不是一个,是为了让你本身的块能够用单个连字符来界定,如:
.site-search{} /* 块 */
.site-search__field{} /* 元素 */
.site-search--full{} /* 修饰符 */

3、总结

  • B: block ,某一块展现/功能区域(div, 好比: nav
  • E: Element, 这块展现/功能区域(div)里面的某个元素,好比: nav__item
  • M:Modifier, 某个元素或者某个块的状态,好比 nav--hide, nav__item--open 啥的

例子:
ide

B:header-tabs //名字随便
E:header-tabs__item //多个tab选项
M:header-tabs__item--active //选中状态学习

4、参考文章

  1. BEM —— 源自Yandex的CSS 命名方法论
相关文章
相关标签/搜索