CSS模块化编码让开发事半功倍
来源:互联网 发布:mysql 双主 英文描述 编辑:程序博客网 时间:2024/06/07 03:52
原生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编码一般是为1~4定义四个类名,为他们写各自的样式; 明智一点的写法是为1~4定义四个类名,用.a .b .c .d{…}方式定义共同样式,然后再为各自定义不同部分的样式;但是,还有一种完美的方式,那便是模块化. 下面我就以上图为例做个简单的模块化分析。
第一步,分析整个视觉共用部分. 可以看出,1~4中,标题背景、标题文字、内容文字这三个部分的样式都是相同的。所以,我们可以为这个四个区块定义一个类名,将共同的样式写给这个类名:
<
div
>
<
h2
>倒霉松鼠再出山h2>
<
p
>20世纪福克斯将为卖座动画片《冰河世纪》(Ice Age内地译做《冰川时代》)再次开拍续集...p>
<
div
>
<
div
>
<
h2
>倒霉松鼠再出山h2>
<
p
>20世纪福克斯将为卖座动画片《冰河世纪》(Ice Age内地译做《冰川时代》)再次开拍续集...p>
<
div
>
第二步,分析出不同部分,并权衡高效使用. 可以看出,不同部分,主要是内容背景色和区块宽度两部分. 先说背景色,背景色有三种,淡黄(1个),白色(2个),灰色(1个),遵从”模块与模块之间尽量不要包含相同的部分,若有相同部分就再拆出来独立成一个模块”的原则,我们要把2个白底的样式提出来,另两个单独定义,而根据Css优先原则,我们可以把白底默认定义到第一步中的box样式中,另两种背景色可做重定义处理. 再来看看宽度与定位,2,4宽度等同且都右浮动,所以,我们可以把这部分提出来模块化,而浮动一般可以直接调用通用原子类,所以,我们仅仅需要定义一个宽度样式中(若这个宽度在通用原子类中也有就更好了). 如此以来,Html可以这样写:
<
div
>
<
h2
>倒霉松鼠再出山h2>
<
p
>20世纪福克斯将为卖座动画片《冰河世纪》(Ice Age内地译做《冰川时代》)再次开拍续集...p>
</
div
>
<
div
>
<
h2
>倒霉松鼠再出山h2>
<
p
>20世纪福克斯将为卖座动画片《冰河世纪》(Ice Age内地译做《冰川时代》)再次开拍续集...p>
</
div
>
或许,这样的结构对Html页面来说,会显的有些臃肿,但Css文件因为重用性的提高而大大的减小了. Css模块化是一个比较实用但也需要去领悟的思想,实际使用中也需要全面的分析,过多的模块也会导致维护性的降低,如同OOP编程一样,我们也要考虑”公有属性”与”私有属性”. 本文通过一个简单的例子解析了Css模块化的基本思想,更多关于Css模块化的知识,可以看YUI Css或者其他网络上的资源.
/*文字排版*/
.f
12
{
font-size
:
12px
}
.f
13
{
font-size
:
13px
}
.f
14
{
font-size
:
14px
}
.f
16
{
font-size
:
16px
}
.f
20
{
font-size
:
20px
}
.fb{
font-weight
:
bold
}
.fn{
font-weight
:
normal
}
.t
2
{
text-indent
:
2em
}
.lh
150
{
line-height
:
150%
}
.lh
180
{
line-height
:
180%
}
.lh
200
{
line-height
:
200%
}
.unl{
text-decoration
:
underline
;}
.no_unl{
text-decoration
:
none
;}
/*定位*/
.tl{
text-align
:
left
}
.tc{
text-align
:
center
}
.tr{
text-align
:
right
}
.bc{
margin-left
:
auto
;
margin-right
:
auto
;}
.fl{
float
:
left
;
display
:
inline
}
.fr{
float
:
right
;
display
:
inline
}
.cb{
clear
:
both
}
.cl{
clear
:
left
}
.cr{
clear
:
right
}
.clearfix:after{
content
:
"."
;
display
:
block
;
height
:
0
;
clear
:
both
;
visibility
:
hidden
}
.clearfix{
display
:inline-
block
}* html .clearfix{
height
:
1%
}.clearfix{
display
:
block
}
.vm{
vertical-align
:
middle
}
.pr{
position
:
relative
}
.pa{
position
:
absolute
}
.abs-
right
{
position
:
absolute
;
right
:
0
}
.zoom{zoom:
1
}
.
hidden
{
visibility
:
hidden
}
.
none
{
display
:
none
}
/*长度高度*/
.w
10
{
width
:
10px
}
.w
20
{
width
:
20px
}
.w
30
{
width
:
30px
}
.w
40
{
width
:
40px
}
.w
50
{
width
:
50px
}
.w
60
{
width
:
60px
}
.w
70
{
width
:
70px
}
.w
80
{
width
:
80px
}
.w
90
{
width
:
90px
}
.w
100
{
width
:
100px
}
.w
200
{
width
:
200px
}
.w
250
{
width
:
250px
}
.w
300
{
width
:
300px
}
.w
400
{
width
:
400px
}
.w
500
{
width
:
500px
}
.w
600
{
width
:
600px
}
.w
700
{
width
:
700px
}
.w
800
{
width
:
800px
}
.w{
width
:
100%
}
.h
50
{
height
:
50px
}
.h
80
{
height
:
80px
}
.h
100
{
height
:
100px
}
.h
200
{
height
:
200px
}
.h{
height
:
100%
}
/*边距*/
.m
10
{
margin
:
10px
}
.m
15
{
margin
:
15px
}
.m
30
{
margin
:
30px
}
.mt
5
{
margin-top
:
5px
}
.mt
10
{
margin-top
:
10px
}
.mt
15
{
margin-top
:
15px
}
.mt
20
{
margin-top
:
20px
}
.mt
30
{
margin-top
:
30px
}
.mt
50
{
margin-top
:
50px
}
.mt
100
{
margin-top
:
100px
}
.mb
10
{
margin-bottom
:
10px
}
.mb
15
{
margin-bottom
:
15px
}
.mb
20
{
margin-bottom
:
20px
}
.mb
30
{
margin-bottom
:
30px
}
.mb
50
{
margin-bottom
:
50px
}
.mb
100
{
margin-bottom
:
100px
}
.ml
5
{
margin-left
:
5px
}
.ml
10
{
margin-left
:
10px
}
.ml
15
{
margin-left
:
15px
}
.ml
20
{
margin-left
:
20px
}
.ml
30
{
margin-left
:
30px
}
.ml
50
{
margin-left
:
50px
}
.ml
100
{
margin-left
:
100px
}
.mr
5
{
margin-right
:
5px
}
.mr
10
{
margin-right
:
10px
}
.mr
15
{
margin-right
:
15px
}
.mr
20
{
margin-right
:
20px
}
.mr
30
{
margin-right
:
30px
}
.mr
50
{
margin-right
:
50px
}
.mr
100
{
margin-right
:
100px
}
.p
10
{
padding
:
10px
;}
.p
15
{
padding
:
15px
;}
.p
30
{
padding
:
30px
;}
.pt
5
{
padding-top
:
5px
}
.pt
10
{
padding-top
:
10px
}
.pt
15
{
padding-top
:
15px
}
.pt
20
{
padding-top
:
20px
}
.pt
30
{
padding-top
:
30px
}
.pt
50
{
padding-top
:
50px
}
.pb
5
{
padding-bottom
:
5px
}
.pb
10
{
padding-bottom
:
10px
}
.pb
15
{
padding-bottom
:
15px
}
.pb
20
{
padding-bottom
:
20px
}
.pb
30
{
padding-bottom
:
30px
}
.pb
50
{
padding-bottom
:
50px
}
.pb
100
{
padding-bottom
:
100px
}
.pl
5
{
padding-left
:
5px
}
.pl
10
{
padding-left
:
10px
}
.pl
15
{
padding-left
:
15px
}
.pl
20
{
padding-left
:
20px
}
.pl
30
{
padding-left
:
30px
}
.pl
50
{
padding-left
:
50px
}
.pl
100
{
padding-left
:
100px
}
.pr
5
{
padding-right
:
5px
}
.pr
10
{
padding-right
:
10px
}
.pr
15
{
padding-right
:
15px
}
.pr
20
{
padding-right
:
20px
}
.pr
30
{
padding-right
:
30px
}
.pr
50
{
padding-right
:
50px
}
.pr
100
{
padding-right
:
100px
}
- CSS模块化编码让开发事半功倍
- Android 代码规范-让开发事半功倍
- CSS技巧: 模块化编码
- 让开发自动化: 持续反馈
- 让开发自动化: 持续测试
- 让开发自动化:文档化一键通
- 让开发自动化: 文档化一键通
- 让开发团队走向卓有成效
- kotlin让开发更简洁
- ClipDrawable让开发更简单
- 让开发自动化: 持续测试 (form developerworks)
- 让开发自动化: 持续集成反模式
- 让开发自动化: 持续集成反模式
- Java让开发自动化:自动负载测试
- 让开发自动化:持续重构
- 让开发自动化: 持续重构
- 让开发自动化: 部署自动化模式
- Curl语言优势,让开发更简单
- android.mk(2)
- 最近modis的学习
- android textview style
- Atheros AR9285坑爹网卡只有54M/65M,开启150M速率的方法
- 静态库链接学习
- CSS模块化编码让开发事半功倍
- 20140704-C#object/List<object>与json、xml之间的相互转换
- 字符串时间转化成time_t格式
- 雾山的Anrdoid学习笔记---CheckBox,RadioGroup&RadioButton .
- [Linux筆記] 利用 mount 指令解決 Read-only file system 問題
- 线程之间利用信号量协调对共享资源访问的c++代码实现
- container_of分析
- OTN交换& P-OTN有效降低100G 网络成本 (二)
- c#XML操作