- ice-cream
- 等级:


- 性别:
 - 文章: 86
- 积分: 820
- 来自: 上海

|
发表时间:2009-11-07
最后修改:2009-11-08
最近看到了些关于css命名方面的文章,对于这方面我也有自己的看法。
我接触css有很长一段时间了,对于css的命名我也是在逐步改进。
感觉工作中比较常碰见的问题:
1.需要给层定义各种尺寸的宽度,高度基本是不用定义的
2.层的padding和层之间的margin
3.给文字高亮颜色
4.各种样式的tab和button
5.不同的背景色
6.各种样式的border
7.左浮动,右浮动
8.粗体,斜体
9.居左,居中,居右,垂直居顶,居中,居底对齐
1.需要给层定义各种尺寸的宽度,高度基本是不用定义的
以em为单位的是弹性布局,目前浏览器都支持页面整体缩放,不太可能会用到调整浏览器字体大小,所以层的宽度没有必要设置成em单位,“是时候不用考虑基于字体大小(em)的设计了”
以%为单位的是流体布局,这种布局比较难控制,用的较少
最常见的是以px为单位的固定布局,需要定义以px单位的页面通常是栅格布局
那么不了解栅格的朋友可以先看看,"网页的栅格系统设计"
首先保证页面的宽度一定是950px,分成24列,这个时候就要定义24种可能情况的宽度
我目前只用过blueprint框架,它采用的命名方式是:
.span-1 {width:30px;}
.span-2 {width:70px;}
.span-3 {width:110px;}
.span-4 {width:150px;}
.span-5 {width:190px;}
.span-6 {width:230px;}
.span-7 {width:270px;}
.span-8 {width:310px;}
.span-9 {width:350px;}
.span-10 {width:390px;}
.span-11 {width:430px;}
.span-12 {width:470px;}
.span-13 {width:510px;}
.span-14 {width:550px;}
.span-15 {width:590px;}
.span-16 {width:630px;}
.span-17 {width:670px;}
.span-18 {width:710px;}
.span-19 {width:750px;}
.span-20 {width:790px;}
.span-21 {width:830px;}
.span-22 {width:870px;}
.span-23 {width:910px;}
.span-24 {width:950px;}
我个人觉得span根据标签意思是内联元素,内联元素是不能定义宽度的,这里span不太合适。
采用grid-1,grid-2,...grid-24或者w-1,w-2,...w-24会更合适
2.层的padding和层之间的margin
栅格布局每列之间的间距是10px,所以层之间的margin的全局定义方式:
.w-1,.w-2,...,.w-23{margin-right:10px;}
最大宽度w-24刚好是950px,不需要定义margin。
少数一些时候用到w-1,w-2,...,w-23时列之间可能不需要margin-right,这时需要定义
.last{margin-right:0;}去reset之间的
我们还需要定义些常用到的margin和padding,于是有:
.ml-10{margin-left:10px}
.mr-10{margin-right:10px}
.mt-10{margin-top:10px}
.mb-10{margin-bottom:10px}
.pl-10{padding-left:10px}
.pr-10{padding-right:10px}
.pt-10{padding-top:10px}
.pb-10{padding-bottom:10px}
mg-10{margin:10px;}
pd-10{padding:10px;}
...
以次类推
3.给文字高亮
项目中这个需求一直在变动,通常要定义几种全局的高亮颜色.
常见的命名方式是.red或者.hightlight-red...,class中含有颜色的名字这种方式其实不好。
项目中如果需要添加换色的功能,需要用其它颜色的样式表reset之间的样式表,那之前定义的高亮颜色在其它颜色中就不一定适合,而class却还要用原来的,这样就不语义化了。
就算不考虑换色功能,但希望做出来的页面能更加满足用户的感受,这个高亮的颜色也可能一直在变的。
所以建议用hightlight-1,hightlight-2...,通常高亮颜色在1到3种之间,不会太多,容易记住。
4.各种样式的tab和button
.tab-1{...}
...
.button-1{...}
...
5.不同的背景色
.bc-1{background-color:#;}
...
6.各种样式的border
.b1s-1{border:1px solid #000;}
.b1d-1{border:1px dashed #000;}
...
4,5,6中之所以class中用-1而不用-color,理由跟第三种“给文字高亮”类似
7.左浮动,有浮动,
居左,居右,居中
.f-l{float:left;}
.f-r{float:right;}
.f-n{float:none;}
还有清浮动的
.c-b{clear:both;}
.c-l{clear:left;}
.c-r{clear:right;}
8.粗体,斜体
与其定义class不如直接用相应的标签,反正粗体或斜体的内容总归需要放入一个标签中。
粗体就直接用<b></b>,斜体直接用<em></em>
9.居左
,居中
,居右,垂直居
顶,居中,居底对齐
.ta-l{text-align:left;}
.ta-c{text-align:center;}
.ta-r{text-align:right;}
.va-t{vertical-align:top;}
.va-m{vertical-align:middle;}
.va-b{vertical-align:bottom;}
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
返回顶楼 |
|
|
- karry
- 等级: 初级会员

- 性别:
 - 文章: 3
- 积分: 30
- 来自: 上海

|
 我喜欢用 grid-30 grid-70 grid-110。。。这种方式,好记 另外还要常用的 prel--position:relative pabs--position:absolute t-center--text-align:center
|
返回顶楼 |
|
|
- ice-cream
- 等级:


- 性别:
 - 文章: 86
- 积分: 820
- 来自: 上海

|
karry 写道 我喜欢用 grid-30 grid-70 grid-110。。。这种方式,好记
用grid-1,...,grid-24,因为是栅格, 只要子列grid后面的数字相加等于父元素grid后面的数字就行了,例如 <div class="grid-10"> <div class="grid-4"></div> <div class="grid-6"></div> </div> 这种算法比宽度值相加简单些
|
返回顶楼 |
|
|
- karry
- 等级: 初级会员

- 性别:
 - 文章: 3
- 积分: 30
- 来自: 上海

|
发表时间:2009-11-08
最后修改:2009-11-08
 有道理啊有道理 ,看来我栅格的不彻底。
顺便问问,我有时候很矛盾,如果一个元素自己有一个样式test,现在是需要左浮动,你是倾向加一个f-l样式,还是在test里面加一个float:left,最好告诉我你选择的原因,因为我还要说服别人。
|
返回顶楼 |
|
|
- ice-cream
- 等级:


- 性别:
 - 文章: 86
- 积分: 820
- 来自: 上海

|
karry 写道 如果一个元素自己有一个样式test,现在是需要左浮动,你是倾向加一个f-l样式,还是在test里面加一个float:left,最好告诉我你选择的原因,因为我还要说服别人。 当然倾向加一个f-l,因为你定义的这个test在页面中可能会左,右浮动,或者不浮动。 除非页面中test大多数是左浮动,那你可以给test左浮动,其它的情况再去reset吧。
|
返回顶楼 |
|
|
- Aguo
- 等级: 初级会员

- 性别:
 - 文章: 84
- 积分: 10
- 来自: 广州

|
后台程序员能遇到这样的前端真是一种幸福
|
返回顶楼 |
|
|
- makemyownlife
- 等级: 初级会员

- 性别:
 - 文章: 114
- 积分: 20
- 来自: 武汉

|
Aguo 写道 后台程序员能遇到这样的前端真是一种幸福
同意,前端与后台程序员很好的合作才能做出好的应用。
|
返回顶楼 |
|
|
- witcheryne
- 等级:


- 性别:
 - 文章: 502
- 积分: 110
- 来自: 西安

|
ice-cream 写道
....
1.需要给层定义各种尺寸的宽度,高度基本是不用定义的
以em为单位的是弹性布局,目前浏览器都支持页面整体缩放,不太可能会用到调整浏览器字体大小,所以层的宽度没有必要设置成em单位,“是时候不用考虑基于字体大小(em)的设计了”
以%为单位的是流体布局,这种布局比较难控制,用的较少
最常见的是以px为单位的固定布局,需要定义以px单位的页面通常是栅格布局
那么不了解栅格的朋友可以先看看,"网页的栅格系统设计"
首先保证页面的宽度一定是950px,分成24列,这个时候就要定义24种可能情况的宽度
我目前只用过blueprint框架,它采用的命名方式是:
.span-1 {width:30px;}
.span-2 {width:70px;}
.span-3 {width:110px;}
.span-4 {width:150px;}
.span-5 {width:190px;}
.span-6 {width:230px;}
.span-7 {width:270px;}
.span-8 {width:310px;}
.span-9 {width:350px;}
.span-10 {width:390px;}
.span-11 {width:430px;}
.span-12 {width:470px;}
.span-13 {width:510px;}
.span-14 {width:550px;}
.span-15 {width:590px;}
.span-16 {width:630px;}
.span-17 {width:670px;}
.span-18 {width:710px;}
.span-19 {width:750px;}
.span-20 {width:790px;}
.span-21 {width:830px;}
.span-22 {width:870px;}
.span-23 {width:910px;}
.span-24 {width:950px;}
我个人觉得span根据标签意思是内联元素,内联元素是不能定义宽度的,这里span不太合适。
采用grid-1,grid-2,...grid-24或者w-1,w-2,...w-24会更合适
2.层的padding和层之间的margin
...
960grid 这个css框架 好像就是用grid-1, 2, 3 这种命名方式... 用起来很容易理解。。
|
返回顶楼 |
|
|
- libo_591
- 等级: 初级会员

- 性别:
 - 文章: 57
- 积分: 30
- 来自: 北京

|
MM,年方几何呀?
|
返回顶楼 |
|
|
- liedexuan
- 等级: 初级会员

- 性别:
 - 文章: 1
- 积分: 30
- 来自: china

|
CSS规范 不错 受教了。
|
返回顶楼 |
|
|