请选择 进入手机版 | 继续访问电脑版
收藏本站腾讯微博新浪微博
点点网模板设计大赛 phpchina

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 用悬赏 三天解决问题 解决访问速度慢 论坛支持农历生日 - 给官方提建议

论坛活动及任务 归纳网站最新活动 地图任务 邮件更新任务:保护帐号安全

积分换实物,来参加蓝色理想积分兑换吧! 联系招聘客服 蓝色理想帮你找工作! 万元奖励等你拿——点点网模板设计大赛

查看: 4355|回复: 23

[讨论] CSS样式指南:提高CSS代码的可读性 [复制链接]

demix 楼主
帖子
68
体力
186
威望
2
居住地
湖北省 武汉市
发表于 2008-5-3 23:37:21 |显示全部楼层
参考: Smashing magzine

翻译+整理: Demix

当完成一项前端的工作之后,许多人都会忘记该项目的结构与细节。然而代码并不是马上就能完全定型,在余下的时间里还有不断的维护工作,而这些工作也许不会是你自己完成。所以,结构优良的代码能很大程度上优化它的可维护性。下面列出五种提高CSS文件可维护性的方法,也就是一种较好的CSS样式指南。

1.分解你的样式

对于小项目,在写代码之前,按页面结构或页面内容将代码分为几块并给予注释。例如,可以分别将 全局样式、布局、字体样式、表单、评论和其他分为几个不同的块来继续工作。

而对于较大的工程,这样显然不会有什么效果。此时,就需要将样式分解到几个不同的样式表文件。下面的master stylesheet 就是这一方法的例子,它的工作主要是导入其他样式文件。使用这一方法不仅能优化样式结构,而且有利于减少一些不必要的服务器请求。而分解文件的方法就有许多种,master stylesheet 使用了最常见的一种。


/*------------------------------------------------------------------

[Master Stylesheet]
Project:        Smashing Magazine
Version:        1.1
Last change:        05/02/08 [fixed Float bug, vf]
Assigned to:        Vitaly Friedman (vf), Sven Lennartz (sl)
Primary use:        Magazine
-------------------------------------------------------------------*/
@import "reset.css";
@import "layout.css";
@import "colors.css";
@import "typography.css";
@import "flash.css";
/* @import "debugging.css"; */


同时对于大型项目,你也可以加上CSS文件的升级标志或者一些诊断措施,这里不再详述。

2.建立CSS文件索引

为了能够迅速的了解整个CSS文件的结构,在文件开头建立文件索引是一个不错的选择。一种可行的方法是建立树形的索引:结构上的id 和 class 都可以成为该树的一个分支。如下:


/*------------------------------------------------------------------
[Layout]
* body
      + Header / #header
      + Content / #content
            - Left column / #leftcolumn
            - Right column / #rightcolumn
            - Sidebar / #sidebar
            - RSS / #rss
            - Search / #search
            - Boxes / .box
            - Sideblog / #sideblog
      + Footer / #footer
Navigation          #navbar
Advertisements          .ads
Content header          h2
——————————————————————-*/


或者也可以这样:

/*------------------------------------------------------------------

[Table of contents]
1. Body
      2. Header / #header
            2.1. Navigation / #navbar
      3. Content / #content
            3.1. Left column / #leftcolumn
            3.2. Right column / #rightcolumn
            3.3. Sidebar / #sidebar
                  3.3.1. RSS / #rss
                  3.3.2. Search / #search
                  3.3.3. Boxes / .box
                  3.3.4. Sideblog / #sideblog
                  3.3.5. Advertisements / .ads
      4. Footer / #footer

-------------------------------------------------------------------*/


另一种方式可以只是先简单的将内容列举出来,也不需要缩进。下面的一个例子中,如果你需要跳至RSS部分你只需要简单的搜索 8.RSS。


/*------------------------------------------------------------------

[Table of contents]
1. Body
2. Header / #header
3. Navigation / #navbar
4. Content / #content
5. Left column / #leftcolumn
6. Right column / #rightcolumn
7. Sidebar / #sidebar
8. RSS / #rss
9. Search / #search
10. Boxes / .box
11. Sideblog / #sideblog
12. Advertisements / .ads
13. Footer / #footer

-------------------------------------------------------------------*/

<!-- some CSS-code -->


/*------------------------------------------------------------------
[8. RSS / #rss]
*/
#rss { ... }
#rss img { ... }


定义这样一个样式检索可以很有效的使其他人阅读学习你的代码变得容易。在制作大项目的时候,你也可以将检索打印出来从而在你阅读代码的时候方便查阅。

3.定义你的颜色和版式

CSS 中我们无法使用常量,但是在编写颜色和版式方面的代码是我们会经常遇到可以使用很多次的类,在这里可以将之视为CSS 的常量。

一种可以减小CSS无常量定义确定的方法是在CSS文件顶部的注释中下一些定义,也就是定义常量。一种最简单的应用就是创建一个颜色表。这样你就可以快速的了解整个页面的色彩,从而避免一些反复修改过程中的错误。如果你需要对颜色进行修改,你也可以很快找到它。

/*------------------------------------------------------------------
# [Color codes]

# Dark grey (text): #333333
# Dark Blue (headings, links) #000066
# Mid Blue (header) #333399
# Light blue (top navigation) #CCCCFF
# Mid grey: #666666
# */

或者,你也可以选择描述你布局当中使用的颜色。对于一个给定的颜色,你可以将用到该颜色的块罗列出来。当然,你也可以选择按页面元素来罗列颜色。

/*------------------------------------------------------------------

[Color codes]

Background:        #ffffff (white)
Content:        #1e1e1e (light black)
Header h1:        #9caa3b (green)
Header h2:        #ee4117 (red)
Footer:                #b5cede (dark black)

a (standard):        #0040b6 (dark blue)
a (visited):        #5999de (light blue)
a (active):        #cc0000 (pink)

-------------------------------------------------------------------*/

对于版式有同样的例子。

/*------------------------------------------------------------------
[Typography]

Body copy:                1.2em/1.6em Verdana, Helvetica, Arial, Geneva, sans-serif;
Headers:                2.7em/1.3em Helvetica, Arial, "Lucida Sans Unicode", Verdana, sans-serif;
Input, textarea:        1.1em Helvetica, Verdana, Geneva, Arial, sans-serif;
Sidebar heading:        1.5em Helvetica, Trebuchet MS, Arial, sans-serif;

Notes:        decreasing heading by 0.4em with every subsequent heading level
-------------------------------------------------------------------*/


4.格式化CSS属性

当我们编写代码的时候,使用一些特殊的编码风格会对提高CSS代码的可读性有很大帮助。许多人都有各自不同的编码风格。一部分人习惯于将颜色和字体的代码放在前面,另外一部分则更喜欢将类似浮动和定位的更“重要”的属性放在前面。类似的,也可以将页面元素按照它在布局中的结构进行排序:


    body,
          h1, h2, h3,
          p, ul, li,
          form {
                  border: 0;
                  margin: 0;
                  padding: 0;
           }


一些开发者用一种更为有意思的方法:他们将属性按首字母的顺序排列。值得注意的是,这样一种方法可能对某些浏览器会产生问题。

不管自己的格式如何,你要确保你已经清晰的定义了这些格式方法。这样,你的同事在阅读你的代码的时候将会感谢你的努力。


5.缩进会是你的朋友!

为了让你的代码给人感觉更为直观,你可以使用一行来定义大纲元素的样式。当指定的选择器里的属性超过三个的时候,这种方式将带来混乱。但是,适度的使用这种方式,你可以很清楚的区分相同类的不同点。


#main-column { display: inline; float: left; width: 30em; }
                    #main-column h1 { font-family: Georgia, "Times New Roman", Times, serif; margin-bottom: 20px; }
                    #main-column p { color: #333; }


同时,样式修改的维护也是个比较麻烦的问题。很多人修改样式之后就忘记了,结果后来又发现修改的样式导致了页面出错,不得不苦苦寻找。因此,为修改的样式构建一个特殊的格式就很必要了。一种很简单的方式是,给修改过的样式缩进,同时,也可以使用一些注释(比如"@new")来做一个标识。


#sidebar ul li a {
       display: block;
       background-color: #ccc;
            border-bottom: 1px solid #999; /* @new */
       margin: 3px 0 3px 0;
            padding: 3px; /* @new */
}


总的来说,只有建立一个合适的样式指南才会对样式表的可读性有所帮助。记住,移去每一个对你理解文件没有帮助的样式指南,避免对过多的元素使用过多的样式指南。然后,为了一个可读性可维护性良好的CSS文件而努力吧。
已有 1 人评分威望 收起 理由
blank + 2 谢谢分享

总评分: 威望 + 2   查看全部评分

Web developer!
西部数码顶级域名注册商39元抢注!
帖子
93
体力
440
威望
0
居住地
重庆市 沙坪坝区
发表于 2008-5-4 01:43:17 |显示全部楼层
好东西。。
租服务器,上51IDC | [长沙]招聘:PHP经理10K/WEB前端6K/PHP开发6K

使用道具 举报

demix 楼主
帖子
68
体力
186
威望
2
居住地
湖北省 武汉市
发表于 2008-5-5 21:37:55 |显示全部楼层
第一次翻译。。。。。
Web developer!

使用道具 举报

su22 
帖子
141
体力
517
威望
0
发表于 2008-5-6 01:04:56 |显示全部楼层
楼主辛苦!
其实写css的时候一直想着"我是写个别人看的"就会很注意了.
nice

使用道具 举报

mxclion

银牌会员 手机认证 

帖子
825
体力
1488
威望
0
居住地
河南省 洛阳市
发表于 2008-5-6 01:22:28 |显示全部楼层
在一些大型的项目中...像这些索引啊什么的..

完全可以人手一份,当做手册来用~

团队之间的配合与协调工作很重要啊!
不在放荡中变坏,就在沉默中变态...

使用道具 举报

nyu16 

夏夜

金牌会员 手机认证 

帖子
206
体力
3997
威望
0
居住地
浙江省 杭州市
发表于 2008-5-6 09:45:52 |显示全部楼层

回复 demix 在 1# 的帖子

好东西,收藏!
温经散寒补肝肾强筋骨

使用道具 举报

上海梦

中级会员 手机认证 

帖子
204
体力
637
威望
0
居住地
广东省 广州市
发表于 2008-5-6 10:07:11 |显示全部楼层
我很有兴趣想知道那个Debugging.css 是怎么写的?

[Master Stylesheet]
Project:       Smashing Magazine
Version:       1.1
Last change:       05/02/08 [fixed Float bug, vf]
Assigned to:       Vitaly Friedman (vf), Sven Lennartz (sl)
Primary use:       Magazine
-------------------------------------------------------------------*/
@import "reset.css";
@import "layout.css";
@import "colors.css";
@import "typography.css";
@import "flash.css";
/* @import "debugging.css"; */

[ 本帖最后由 ivanryin 于 2008-5-6 10:08 编辑 ]
http://shanghaidream.wealink.com

使用道具 举报

zhlran 
帖子
15
体力
44
威望
0
居住地
重庆市 南岸区
发表于 2008-5-6 10:08:42 |显示全部楼层
确实不错啊

使用道具 举报

harky 

死亡天使

银牌会员 手机认证 

帖子
1432
体力
1482
威望
0
发表于 2008-5-6 10:12:58 |显示全部楼层
很不错,顶了

使用道具 举报

古斯比德

银牌会员

帖子
672
体力
2719
威望
2
居住地
浙江省 杭州市
发表于 2008-5-6 10:38:40 |显示全部楼层
非常值得收藏,通过这个指南可以给新手们设定好的习惯,精品!

使用道具 举报

demix 楼主
帖子
68
体力
186
威望
2
居住地
湖北省 武汉市
发表于 2008-5-6 10:50:43 |显示全部楼层
Debugging.css 实际上是一个检验Html中某些不标准或者疏忽的地方

例如可以用
a[href="#"] {background: lime;}
a[href=""] {background: fuchsia;}

一旦某个链接的href为空将有更直观的感觉

另外同样可以对于img
img {outline: 5px solid red;}
img[alt][title] {outline-width: 0;}
img[alt] {outline-color: fuchsia;}
img[alt], img[title] {outline-style: double;}
img[alt=""][title], img[alt][title=""] {outline-width: 3px;}
img[alt=""][title=""] {outline-style: dotted;}

检测了alt和title属性

详情可以参见http://meyerweb.com/eric/thoughts/2007/09/07/diagnostic-styling/

原文里面有的我有点偷懒。。。
Web developer!

使用道具 举报

midy 
帖子
51
体力
220
威望
0
居住地
广东省 广州市
发表于 2008-5-6 10:53:02 |显示全部楼层
不错,支持

使用道具 举报

倔倔iimDonkey

银牌会员

帖子
213
体力
2422
威望
1
发表于 2008-5-6 12:34:42 |显示全部楼层
真不错呀 学习学习 然后应用到工作中!

使用道具 举报

dvb100 
帖子
26
体力
109
威望
0
发表于 2008-5-6 16:49:16 |显示全部楼层
学习了,很有启发,感谢楼主!

使用道具 举报

lurvy 

纯属偶然

中级会员 手机认证 

帖子
336
体力
223
威望
0
发表于 2008-5-6 18:55:02 |显示全部楼层
学习了,受益颇多,此文对于CSS代码的规范化、模块化来说很有意义。
DreamGoOn

使用道具 举报

Jolinv 
帖子
94
体力
190
威望
0
居住地
四川省 成都市
发表于 2008-5-6 21:04:01 |显示全部楼层
不错啊 一直在埋着头做站 是该好好读读这类的文~

提高提高咯· 谢谢楼主分享~

使用道具 举报

ystar 
帖子
145
体力
263
威望
0
居住地
浙江省 杭州市
发表于 2008-5-6 22:09:06 |显示全部楼层
谢谢分享,看了这个后真的对我写代码的规范性起了很大的作用,我总算在心里有了一个可读性的概念。
www.chuxuezhe.net

使用道具 举报

南芝

中级会员

帖子
203
体力
816
威望
1
发表于 2008-5-7 10:18:22 |显示全部楼层
很不错哈

使用道具 举报

lomo 

盗版量子

高级会员

帖子
416
体力
803
威望
0
发表于 2008-5-7 12:34:32 |显示全部楼层
不错,其实写什么,事先的约定和规范都是很重要的...
慢慢沉淀...

使用道具 举报

lomo 

盗版量子

高级会员

帖子
416
体力
803
威望
0
发表于 2008-5-7 15:34:38 |显示全部楼层
但是对于在写css的时候采用缩进,我一直觉得有点别扭,可能是个人原因,因为稍微庞大一点的css都采用从属写法,本身就类似缩进了,要是再缩进,好像看着就更乱了。例如

#header{}
#header .left{}
#header .left ul{}
#header .right{}

纯属个人看法,和大家讨论下...
慢慢沉淀...

使用道具 举报

wtzzy 

亿网

高级会员 手机认证 

帖子
567
体力
1441
威望
2
居住地
辽宁省 沈阳市
发表于 2008-5-10 11:07:22 |显示全部楼层
讲的很好啊  挺喜欢的 支持你

使用道具 举报

帖子
50
体力
206
威望
0
发表于 2008-5-10 13:14:19 |显示全部楼层


学习一下!  谢谢!

使用道具 举报

帖子
10
体力
31
威望
0
发表于 2008-5-11 16:46:27 |显示全部楼层
受益非浅!谢谢!

使用道具 举报

No01 

咚咚吆

金牌会员

帖子
5175
体力
3419
威望
1
发表于 2008-5-13 10:13:29 |显示全部楼层
原帖由 lomo 于 2008-5-7 15:34 发表
但是对于在写css的时候采用缩进,我一直觉得有点别扭,可能是个人原因,因为稍微庞大一点的css都采用从属写法,本身就类似缩进了,要是再缩进,好像看着就更乱了。例如

#header{}
#header .left{}
#header .lef ...


有同感 ....
我已不在江湖 江湖还在为了一些破浏览器争论着..

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|安久科技提供CDN|blueidea.com ( 京ICP备05002321号 )  

GMT+8, 2012-2-13 11:47 , Processed in 0.171430 second(s), 11 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部