晴明的博客园 GitHub      CodePen      CodeWars     

[css] css 几种设计模式(规范)

OOCSS (Object Oriented CSS)

两个原则:
独立的结构和样式
独立的容器和内容

创建OOCSS的关键部分:
创建一个组件库
独立的容器和内容,并且避免样式来依赖位置
独立的结构和样式
使用类名为扩展基本对象
坚持以语义类来命名类名

<div class="item">
  <ul class="item-list">
    <li class="item-list--item">
      <h3 class="item-heading">...
      
<button class="button button-primary">primary</button>
<button class="button button-info">info</button>

BEM(Block,Element,Modifier)

BEM与SMACSS两者类似

BEM代表块(Block),元素(Element),修饰符(Modifier)。

一个块是一个独立的实体,就像应用的一块“积木”。
一个块既可以是简单的也可以是复合的(包含其他块)。
一个块范围内的一种元素的名字也必须是唯一的。一种元素可以重复出现多次。
一个独立的块可以放置在页面的任意位置 ,包括嵌套在其他块里。

一个元素是块的一部分,具有某种功能。
元素是依赖上下文的:
它们只有处于他们应该属于的块的上下文中时才是有意义的。

修饰符作为一个块或是一个元素的一种属性,代表这个块或这个元素在外观或是行为上的改变。
一个修饰符有一个名字和一个值。多个修饰符可以同时使用。

命名约定模式:

.block{}
.block__element{}
.block_modifier{}	

.block 代表了更高级别的抽象或组件。
.block__element 代表.block的后代,用于形成一个完整的.block的整体。
.block_modifier代表.block的不同状态或不同版本。
<ul class="menu">
      <li class="menu__item">...</li>
      <li class="menu__item_state_current">...</li>
      <li class="menu__item">...</li>
</ul>    

SMACSS(Scalable and Modular Architecture for CSS)

五种样式类型:
Base (基本)
Layout(布局)
Module (模块)
State (状态)
Theme (皮肤)

<div class=“container”>
      <div class=“container-header”>
        <div class=“container-header__title”>
              <h1 class=“container-header__title--home”>

METACSS | ATOMCSS (原子CSS)

本质是以classname取代inline-style的工作
以样式为中心的行为模式

<div class="fl mr10 red">
    <span class="blue fl"></span>    
</div> 
posted @ 2017-01-25 18:07  晴明桑  阅读(610)  评论(0编辑  收藏  举报