出于如下缘由,咱们鼓励使用 OOCSS 和 BEM 的某种组合:css
能够帮助咱们理清 CSS 和 HTML 之间清晰且严谨的关系。html
能够帮助咱们建立出可重用、易装配的组件。git
能够减小嵌套,下降特定性。github
能够帮助咱们建立出可扩展的样式表。网站
OOCSS,也就是 “Object Oriented CSS(面向对象的CSS)”,是一种写 CSS 的方法,其思想就是鼓励你把样式表看做“对象”的集合:建立可重用性、可重复性的代码段让你能够在整个网站中屡次使用。ui
参考资料:code
Nicole Sullivan 的 OOCSS wikihtm
Smashing Magazine 的 Introduction to OOCSS对象
BEM,也就是 “Block-Element-Modifier”,是一种用于 HTML 和 CSS 类名的_命名约定_。BEM 最初是由 Yandex 提出的,要知道他们拥有巨大的代码库和可伸缩性,BEM 就是为此而生的,而且能够做为一套遵循 OOCSS 的参考指导规范。element
CSS Trick 的 BEM 101
Harry Roberts 的 introduction to BEM
示例
<article class="listing-card listing-card--featured"> <h1 class="listing-card__title">Adorable 2BR in the sunny Mission</h1> <div class="listing-card__content"> <p>Vestibulum id ligula porta felis euismod semper.</p> </div> </article>
.listing-card { } .listing-card--featured { } .listing-card__title { } .listing-card__content { }
.listing-card
是一个块(block),表示高层次的组件。
.listing-card__title
是一个元素(element),它属于 .listing-card
的一部分,所以块是由元素组成的。
.listing-card--featured
是一个修饰符(modifier),表示这个块与 .listing-card
有着不一样的状态或者变化。