# OOCSS
- OO:面向对象
- 原则一:容器与内容分离
<!-- 容器与内容分离 -->
<div class="post">
<p class="metadata">
<a>Author name</a>commented on <a>21-02-2010</a>@
</p>
</div>
<!-- comment中的meta-data -->
<div class="comment">
<p class="metadata">
<a>Author name</a>commented on<a>21-02-2010</a>@
</p>
</div>
.post{css code}容器样式
.metadata{css code}内容样式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
- 原则二:结构(基础对象)与皮肤分离
<!-- 基础对象 与 对象 分离 -->
<div class="menu fix"></div>
<div class="menu fix1"></div>
.menu{
color:green;
font-size:12px;
}
.fix1{
font-size:12px;
}
.fix2{
color:red;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
- 原则三:面向设计开发
# BEM
- 块(Block)、元素(Elemen__)、修饰符(Modifier--)
<div class="menu">
<div class="menu__tab menu__tab--style1">tab1</div>
<div class="menu__tab menu__tab--style1">tab2</div>
<div class="menu__tab menu__tab--style1">tab3</div>
<div class="menu__tab menu__tab--style1">tab4</div>
</div>
<div class="menu">
<div class="menu__tab menu__tab--style2">tab1</div>
<div class="menu__tab menu__tab--style2">tab2</div>
<div class="menu__tab menu__tab--style2">tab3</div>
<div class="menu__tab menu__tab--style2">tab4</div>
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
- 作用:命名规范、让页面结构清晰
- 进阶的OOCSS
# SMACSS
分类:Base、Layout、Modules、State、Theme
- Base
- 重置浏览器默认样式 normalize.css
- 元素的特殊定制化
- Layout
- 网站可能存在的布局方式 l-header l-main l-footer
- Modules
- 维护网站可复用的模块的样式
- State
- 管理模块的不同状态的样式 is-hidden
- Theme
- 维护网站皮肤的目录 theme-
- Base
好处:易维护、易复用、易扩展
命名规范:l-header、is-hidden、theme-nav
# ITCSS
- 分层:七层
- Settings
- 维护网站的变量
- Tools
- 维护样式的工具库
- Generic
- 浏览器默认样式重置
- Base
- 元素定制化的设置
- Objects
- 维护网站OOCSS的样式
- Components
- 维护网站通用组件的样式
- Trumps
- 权重最高的样式 !important
- Settings
- 与SMACSS区别:层次分的更细
# ACSS
- 一个样式属性一个类
- 好处:极强的复用性、维护成本低
- 坏处:破坏了CSS命名的语义化
← 浏览器行为和Http CSS架构方案 →