基本思路是确保全局空间下一级域名不冲突,那么子域名就被限定在了独立的局部做用域中,从而保证命名的惟一性。css
Block-Element-Modifier
一、将命名对象划分为组件(component)和功能(Utility)。组件直接命名,功能额外加前缀,好比专门给js调用的类名可加上js前缀:js-button
二、规定了连字符的用法。普通隔断用单个连字符,描述性词汇用两个连字符:bootstrap
.nav-button { } .nav-button--primary { }
三、状态切换用is-state型的相邻类名(adjoining class)架构
.button { } .button.is-disables { } <button class=”button is-disables”></button>
抽象公共类,把复用度高的样式抽取出来。
过提升复用性,减小命名的须要,由于有的样式直接用公共类名就能实现,不须要额外命名。布局
.mt20 { margin-top: 20px } .tc { text-align: center } .abs { position: absolute } .clearfix:after { content: ‘’; display: block; clear: both; height: 0 }
缺点是滥用就可能付出代价,好比有10个组件用同一个普通类名,那么修改样式只须要改一处CSS便可,可是在10个组件上用同一个公共类名好比mt20,意味着把mt20改为mt15,你须要改10处的class。动画
针对数量庞大的类名code
针对不一样分类,可使用不一样的前缀来划分命名空间component
更像是 CSS 总体架构方案,与 SMACSS 横向分类不一样,它综合了以上各类方法,提出了一个纵向分层模型。(bootstrap使用)orm