CSS技巧: 模块化编码

  原生JS因jQuery的”write less,do more”变得极简, HTML因语义化编码变得简明, 那么, 有没有一种方式让CSS也更加的高效精致呢? 当然有, 那便是模块化编码.

  CSS的模块化,我们可以理解成(抑或本身就是)OOP思想, 重用性、灵活性、可扩展性便是它终极的目标, “类”便是它的核心, OOP的多用组合少用继承一样是它的基本原则. CSS模块化是一个新颖高效的CSS编码方式, 若有接触过YUI CSS的朋友肯定对这种方式有所了解.

  如何CSS模块化, 我想这才是大家真正关心的. 我所理解的CSS模块化, 应该从两大块去区分.

  第一大块, 从整站全局模块化. 这一点大家并不陌生, 时常用到的reset css便是模块化的一部分, 全局通用的字体样式, 链接样式, 以及通用头部底部及主体容器等等这些我们已经熟知, 另外诸如定义文字排版(如.f12{font-size:12px})、定位(如.tl{text-align:left})、长度高度(如.w10{width:10px})、边距(如.m10{margin:10px})等页面中会常用到的样式,这一类,我们称之为CSS通用原子类(哈,与类扯上关系了,那就权当成类吧).通用原子类有两个特点: 通用性和原子性, 任何页面都可以随意使用它们, 且他们只表现最基础的样式, 一个通用原子类只设置一个样式,不可再分. 关于整站全局模块化不再详述, 本文后面我会贴出阿当的《Web前端开发修炼之道》 一书中常用通用原子类样式.

  第二大块, 是从视觉效果上模块化, 在视觉上样式和功能相对独立稳定的部分即可视为模块. 拆分这些模块, 应该尽量遵循一个原则: 模块与模块之间尽量不要包含相同的部分, 若有相同部分就再拆出来独立成一个模块.下图是我画的一个简易的页面视觉图: CSS模块化视觉样例  看到上图, 菜鸟的CSS编码一般是为1~4定义四个类名,为他们写各自的样式; 明智一点的写法是为1~4定义四个类名, 用.a .b .c .d{…}方式定义共同样式, 然后再为各自定义不同部分的样式; 但是, 还有一种完美的方式, 那便是模块化. 下面我就以上图为例做个简单的模块化分析.

  第一步, 分析整个视觉共用部分. 可以看出,1~4中,标题背景,标题文字,内容文字这三个部分的样式都是相同的, 所以, 我们可以为这个四个区块定义一个类名, 将共同的样式写给这个类名:

01 ...
02 div class="box"
03 h2倒霉松鼠再出山/h2
04 p20世纪福克斯将为卖座动画片《冰河世纪》(Ice Age内地译做《冰川时代》)再次开拍续集.../p
05 /div
06 div class="box"
07 h2倒霉松鼠再出山/h2
08 p20世纪福克斯将为卖座动画片《冰河世纪》(Ice Age内地译做《冰川时代》)再次开拍续集.../p
09 /div
10 div class="box"
11 h2倒霉松鼠再出山/h2
12 p20世纪福克斯将为卖座动画片《冰河世纪》(Ice Age内地译做《冰川时代》)再次开拍续集.../p
13 /div
14 div class="box"
15 h2倒霉松鼠再出山/h2
16 p20世纪福克斯将为卖座动画片《冰河世纪》(Ice Age内地译做《冰川时代》)再次开拍续集.../p
17 /div
18 ...
19 /div

it知识库CSS技巧: 模块化编码,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。