可维护的CSS具备如下约定:code
.<module>[-<component>][-<state>] {}
根据所讨论的模块,方括号是可选的。这里有些例子:component
/* 模块 Module container */ .searchResults {} /* 组件 Component */ .searchResults-heading {} /* 状态 State */ .searchResults-isLoading {}
注意:继承
组件和状态都由破折号定界。 名称形式上是用lowerCamelCase。 选择器以模块名称为前缀。
不须要,你能够这样写 .searchResults p
。但请注意,若是您嵌套包含p的模块,那么它将继承样式并须要重写(overriding)。class
好问题。这里有一些没有前缀的HTML:module
<div class="basket"> <div class="heading">
CSS:样式
/* module */ .basket {} /* heading component of basket module */ .basket .heading {}
有两个问题:di
1. 当查看HTML时,很难区分模块和组件; 2. `.basket .heading` 组件将继承意想不到反作用的 `.heading` 模块中的样式。