如果你想成为一位CSS专家的话,光背出一堆选择器是不够的,还要能够提高CSS样式表的可读性,开发效率以及维护性。这里,Jina Bolton 将给我们分享一下她关于如何创建性感的CSS样式表的十个技巧。
本文主要内容为:CSS代码编码规范,教你如何写出整洁漂亮性感的css代码,如何清晰的组织你的样式表文件。闲言少叙,直接进入正题
1. 不要在HTML文件中使用CSS样式定义
相信对于多数有一定工作经验的设计师来说,使用外部样式表来定义CSS样式是小菜一碟的工作。但我在这里仍然需要再次告诉你这点,因为我看到相当多的站点在最开始的时候,有着非常结构清晰,组织良好的代码。但是随着时间的推移,慢慢地内部定义乃至内联样式开始蔓延到站点的各个角落。也许是因为项目周期十分紧迫,抑或只是因为我们有点偷懒。
想象一下,当这样的坏习惯被我们保持了下来,一段时间后,如果老板希望在不改动网页内容的前提下重新设计网站的样式的话,OH,你将不得不去查找这些自己丢在各个角落的垃圾代码,如果项目碰巧规模又非常之大,那我恐怕只有祝你好运,或者推荐你去找黄健翔了。
千万别给自己找这样的麻烦,创建干净的代码,并始终让他们保持干净,这样你会让生活变得充满快乐。
注意:请小心使用过多的外部样式表,如果每次更改你都创建一个新的样式表,这不会给你带来任何好处。过多的样式表会让你将来的调试和更新工作变得更加复杂,当然我理解你希望将样式分组管理的初衷,后面的内容中我会专门和你一起讨论这个问题。
友情提醒:过多的样式表应用,会带来潜在的性能问题,并且在IE6下,最多只能引入32个外部样式表。
2. “语义学Semantics”不仅仅是一个让你迷惑的词语
我要告诉你们,“语义学Semantics”将是你们最好的朋友。在你选择最合适,语义最正确的元素来描述文档内容之外,也请选择语义清晰,合适的词语来定义你的class名称以及元素ID名称。不仅仅是做正确的事,这样做还能让你和你的团队成员的工作变得更加简单。让我们来看一条样式定义:
.l13k { color: #369; }
我相信你乍看到这条定义,你能否知道它是用来干嘛的吗?我想你肯定答不上来。这个名称应该是某个只有作者本人知道的缩写,即使作者现在知道含义,但一个月后,一年以后你还能知道它的含义吗?让我们再来看一条定义:
.left-blue { color: #369; }
这条定义,你可能立刻猜到它是用来干什么的了,页面左边区域,文字颜色为蓝色,表述的非常清楚明确。但是让我们来假设一下,不久的将来,老板希望重新设计样式,这个区域的内容位置将换到右边,文字颜色将换成红色。很显然,这个名称将变得不再合适,甚至变得不正确,现在你有两个选择,一是替换掉每个使用该class的地方,二是继续使用这个让人产生误解的名称。
这样看来,名称不是描述清晰就是好的,我建议你们最好是不要采用诸如颜色或者是高度宽度尺寸等非常具体的细节来命名样式定义,同样的也尽量避免使用具有具体形象的词汇来命名(比如使用 box),这样的做法某种程度上破坏了我们希望将内容和样式分离的初衷。怎样做才是最好的呢,让我们来看一下这个:
.product-description { color: #369; }
这个定义命名,无论你重构多少次,它都是非常合适的,美丽的东西永远是美丽的。
3. 善用代码注释
善用代码注释将会给你和你的团队成员带来极大的便利,不仅仅是通常的注解,我们还能非常创造性的去使用注释来帮助我们更好的完成工作。
* 提示和标注
代码注释最基本和最常见的用处就是用来提示和标注代码,告诉别人这是用来干嘛的。
/* Turn off borders for linked images */
img { border: 0; }
* 时间戳和署名
和我们写程序代码一样,是用注释在文件头部留下时间戳,版本号以及编辑者的署名,将更好的帮助我们追踪记录文件的历史记录。
/* Sushimonster Typography Styles
Updated: Thu 10.18.07 @ 5:15 p.m.
Author: Jina Bolton
—————————————————-*/
* 组织代码
将样式定义按照不同的组别来分组是一个非常好的主意,如果我希望将页首的样式定义放在一起,我会使用这样的注释来帮助我提高代码可读性:
/* HEADER
—————————————————-*/
* 注释标帜
如果你采用了我上面提及的使用注释来分隔不同分组的样式定义代码的方法的话,那使用注释标帜将是一个非常有用的技巧来帮助你更好的查找代码,迅速准确的定位到你想要的位置。我们可以使用一个特殊的符号(比如 [=])来作为注释标帜
/* =HEADER
—————————————————-*/
非常酷的一个小技巧,这样你不用上下拖动,就能迅速通过查找来定位到你想要编辑的位置了,查看更多关于注释标帜。
* 参考索引
虽然不常用,但是也是非常有用的一个注释使用方式就是作为代码的参考索引,比如在文件头部留下使用到的颜色代码:
/* COLORS
Body Background: #2F2C22
Main Text: #B3A576
Links: #9C6D25
Dark Brown Border: #222019
Green Headline: #958944
*/
4. 明确什么时候使用CSS Hack 什么时候使用IE条件注释
有很多关于使用CSS Hack带来的问题,或是使用IE条件注释来解决IE兼容性问题是更佳的方法的文章,以及两者都不支持的文章。以前,我一直认为使用IE条件注释解决这个问题要比CSS Hack来的合适,但是最近通过一些例证,我发现条件注释也不是最合适的解决方案。
原因在于,使用条件注释,必然需要维护同一样式的不同IE版本的副本,这样就带来了工作量的增加,而使用CSS Hack则没有这个问题,因此要具体问题具体分析。
但是不管采用哪种方法,请注意以下两点:
a) 如果使用了条件注释,请在主代码文件中留下注释,提醒自己以及其他设计师,如果修改了此处样式,则需要同时更新其他所有IE版本的样式定义。
b) 如果使用CSS Hack,也请留下注释,标明这里使用哪些Hack,对于什么版本浏览器生效,因为在可以预见的将来,随着浏览器版本的升级,这些Hack很有可能会失效。
5. 组织好你的选择器以及属性声明
切记,切记,请将你的样式表文件组织的结构清晰,我比较倾向于以下的代码组织方式:
reset styles 重置浏览器默认值
typography styles 文字,版式定义
layout styles (header, content, footer, etc.) 布局定义
module or widget styles 模块定义
etc.
对于上面的分组之下,我根据元素DOM位置来分组:
any parent styles (containing elements, working outside-in) 容器元素
block-level element styles (paragraphs, lists, etc.) 块级元素
inline element styles (links, abbreviations, etc.) 行级元素
etc.
再之下,我根据元素类型来分组:
paragraphs
blockquotes
addresses
lists
forms
tables
最后对于每一个样式定义,我会将属性声明根据不同的类型分组:
positioning (with coordinates) styles
float/clear styles
display/visibility styles
spacing (margin, padding, border) styles
dimensions (width, height) styles
typography-related (line-height, color, etc.) styles
miscellaneous (list-style, cursors, etc.) styles
很多人喜欢将属性声明按照字母排序,这个就是看个人喜好,但是我喜欢这样的分组方式。
6. 创建CSS Framework
如果你发现你经常创建类似的样式表的话,那你可以创建属于自己的CSS Framework来积累大量的基础样式表,这样在将来可以大大简化你的工作。
screen.css - A screen CSS file can either have all your styles you want to be used for on screen, and/or can import additional styles, such as the following:
reset.css - A reset CSS file can be used to “reset” all the default browser styling, which can help make it easier to achieve cross-browser compatibility. (我的重置样式表 undohtml.css)
typography.css - A typography CSS file can define your typefaces, sizes, leading, kerning, and possibly even color.
grid.css - A grid CSS file can have your layout structure (and act as the wireframe of your site, by defining the basic header, footer, and column set up).
print.css - A print CSS file would include your styles you want to be used when the page is printed.
Blueprint framework 就是一个非常不错的CSS Framework,大家可以看一下。
7. 平衡可读性和代码优化
是将代码优化到极致(比如,没有注释,没有换行,压缩到体积最小),还是保留文档非常好的可读性。这个问题,每个人可以去找属于自己的平衡点。当然最理想的做法是,发布网站的时候再去压缩CSS样式表文件。
8. 熟练掌握你的文本编辑器
不管你是使用textmate,dreamweaver,vim,还是什么,请一定要熟练掌握他们。工欲善其事,必先利其器。
9. 使用版本控制
使用例如SVN或者CVS等版本控制程序来辅助我们更好的维护样式表。(对于我们程序员来说,可能这个再熟悉不过了,推荐使用SVN iloveit)
10. 创建并维护样式表文件指南
如果你想成为一名出色的设计师,坚持这点吧。