CSS 文件的大小和所引起的 HTTP 的请求数
是 CSS 性能的最关键因素
回流(reflow)和渲染时间
(非常!)没那么重要
副本(duplication)比陈旧的规则(stale rules)更糟糕
因为我们有工具处理后者
定义缺省值
不要在每处都重复编码
不好的:
#weatherModule h3{color:red;}
#tabs h3{color:blue;}
推荐:
h1, .h1{...}
h2, .h2{...}
h3, .h3{...}
h4, .h4{...}
h5, .h5{...}
h6, .h6{...}
用单独的 class 来定义结构
不要在每处都重复编码
使用 class
而不是元素选择器
不好的:
div.error{...}
推荐:
.error{绝大多数代码写在这里}
div.error{单独定义}
p.error{单独定义}
em.error{单独定义}
避免使用元素选择器
初始化除外
不好的:
div{...}
ul{...}
p{...}
推荐:
.error{...}
.section{...}
.products{...}
给规则同样的权重
使用级联去重写先前的规则
不好的:
.myModule .inner b{...}
.myModule2 b{...}
推荐:
.myModule b{...}
.myModule2 b{...}
保守的使用 hack
不好的:
.mod .hd{...}
.ie .mod .hd{...}
.weatherMod .hd{...}
推荐:
.mod .hd{color:red;_zoom:1;}
.weatherMod .hd{...}
注:此点来自 The Cascade, Grids, Headings, and Selectors from an OOCSS Perspective, Ajax Experience 2009 第96P,为作者在 Ajax Experience 2009 上所做的补充。
避免指定位置
应用 class 在你想要改变的对象上
不好的:
.sidebar ul{...}
.header ul{...}
推荐:
.mainNav{...}
.subNav{...}
避免太过特别的 class
它们是都有语义的,而且有限制
不好的:
.ducatiMonster620{...}
.nicolesDucatiMonster620{...}
推荐:
.vehicle{...}
.motorcycle{...}
避免单独的定义
id 在每个页面只能使用一次
不好的:
#myUniqueIdentifier{...}
#myUniqueIdentifier2{...}
混合使用
避免重复编码
封装
不要直接访问对象的子节点
不好的:
.inner{...}
.tr{...}
.bl{...}
推荐:
.weatherMod .inner{...}
.weatherMod .tr{...}
.weatherMod .bl{...}
|