电脑技术学习

CSS样式表创建美妙绝伦的网站

dn001

  想成为一名css专家,仅仅熟练使用CSS选择符(selectors)是远远不够的。还在于对工作的整体规划,工作流程的掌握以及提高样式表的可维护性和效率。在这篇文章里Jina Bolton从12个顶尖设计师那里精选出了10种css应用技巧推荐给大家。

  最近,我一直在研究如何创建更具吸引力的样式表的方法。用css可以创建出我们想要的美妙绝伦的网站,而写css本身就是一种享受。

  如何创建更具吸引力的样式表?你的样式表应该具有哪些特性?

  几个月前,我有幸出席了在美国俄勒冈州波兰特举办的2007年网页视觉大会。为了这次盛会,我研究了12位在网页设计开发方面做出杰出贡献的设计师。这次研究的结果,结合我自己工作经验帮助我总结出一套制作精美样式表的好方法。

  01.不要让css有过多的标记

  链接或者导入样式表听起来好像是一种无头绪的工作。但是我想要强调为什么这个那么重要。我看过很多的网站开发都有着整洁的、组织严密的css文档,但是慢慢的,由于可能达不到在短期内快速更新,或者直接懒得再去管理,这使得先前创建的精致的样式表变成了垃圾。

  想象一下,你工作在需要发布上百条内容的庞大网站上面。因为时间有限,所以你需要通过嵌套或者排列css来进行快速修改或更新。一年一年的过去了,这种习惯维持着,直到一天你被告知这个网站要完全推翻重新设计(但是内容还是一样)而且你只有一周的时间去创建(包括测试)。

  通常,更新样式表还算是一个非常简单的方法。除非你长时间对网站零散的区域做修改。你就不能对网站样式表结构有一个整体的把握。所以现在你有两个办法a把所有的内容进行整理,然后再一个月内重新设计(祝你好运)b 去找一份新工作。

  不要让你的工作变成这个样子。链接或者导入你的样式表不是那样随意的事情。创建干净整洁的样式表,并保持下去,你的工作就会更开心。

  注意:不要在你的样式表里加入太多标记。如果你试图在每次更新或者添加新内容的时候创建新的样式表,那你肯定是自找麻烦。过多的链接和导入样式表会使消除bug工作变得异常困难,让你的样式表很难维持。大一点的网站分别建立不同部分的样式表这是可以理解的。就是小心不要太走极端。

  比较值得一提的是添加很多的样式表,会增加更多的http请求,可能还会影响到后面的工作。此外,微软ie6浏览器对32连接式样表还有一定的限制。. www.webjx.com

  02.语义不仅仅只是个行业词

  要知道我不得不把它提上来说,语义会成为你的好朋友,除了选择最合适的,最有意义的元素来表述你的内容外,还要确定你选择class 和id属性值。在本职工作外,还会让你的生活变得简单(这也会让你工作团队里伙伴的生活变得简单----如果你在一个团队中工作的话)。看看下面的定义:

  .l13k { color: #369; }

  如果你刚来参加工作,你看到在这个css文件里,你会立刻找到这个class吗?估计不太可能,因为这个类的名称可能是一种缩写,所以这里没有一个准确的方法能够让你立即说出来。或者可能是你把它放在那里,今天你知道它的意思,但是你能保证过了很多年后还知道它的意思吗?

  现在,让我们来看看这个定义:

  .left-blue { color: #369; }

  你可能立即很明确的知道这个class选择符的用途就像你知道左边栏蓝色的模块在那里一样,所以这就表明它起作用了。我前面提到,可能你在一星期的时间需要重新设计。在重新设计的时候,这个模块被放置到了右边,而且还是红颜色。这个类就不再有存在的价值了。所以现在不得不选择,要么改变所有的属性值,要么放着它不动。(这可能导致更多的混乱。)

  最好不要在你的类属性里面去加入颜色或者长宽的尺寸。你应该避免任何的属性值都是直接的词汇。(比如box)直接属性可以会导致内容的分离。

  最后,让我们来看看更恰当的命名规范:

  .product-description { color: #369; }

  这里你可以看到。用这种样式定义的product-description(产品描述),不管你怎么改变,都很清晰。

  03.加注释的好处

  如果你的注释组织良好,且在css的控制范围,清楚的标注每节(section)。最好确保注释视觉突出,以便在内容滚动、一目十行时快速定位,那么注释你的css文档对你或者其他人在以后的开发中都会有很大的帮助。大部分基础的注释会提示为什么这个规则会用在这里。

  提示和注意

  添加注释可以帮助你或者以后的开发者避免出现不必要的混乱。保持这种习惯。看范例:

  /* Turn off borders for linked images */
  img { border: 0; }

  时间和署名

  一些设计师和开发人员喜欢在css文档最近更新中标明日子和时间,还有他们的名字和初始状态。这些信息可以提供给你谁参与了这些,也提示了最近的文档是怎样的。
  webjx.com


  /* Sushimonster Typography Styles
  Updated: Thu 10.18.07 @ 5:15 p.m.
  Author: Jina Bolton
  ----------------------------------------------------*/

  这是个很好的主意特别是当你工作在一个团队中,请记住,有些团队需要省去这种信息(一些公司宁愿在文档里不出现这些名字和日期。)所以,最好就是看一下是不是需要这种信息。

  组织分类

  用注释简单说明css里的各个部分是个不错的主意。例如,如果所有的标题类型都放在一起了,你就需要注视来区分他们。

  /* HEADER
  ----------------------------------------------------*/

  我会稍后在讨论“区分不同类型”的时候详细地说明这个。

  注释加标

  如果你的css文档在组织零散样式的时候跟我上面说的一样,注释加标可以帮助你在你想要找到那部分文件的时候变得更简单。你可以用特征符号、关键词然后找到最终结果。
  
  /* =HEADER
  ----------------------------------------------------*/

  这在又长又复杂的样式表中很有帮助。你可以在 Stop Design里读到这个。.

  参考

  如果大家在制作样式表的习惯上有所不同,用注释作为参考向导还是很有用的。这个你在Steve Smith’s的css文件中,看到的就是包含一个规定色彩的参考标准。

  /* COLORS
  Body Background: #2F2C22
  Main Text: #B3A576
  Links: #9C6D25
  Dark Brown Border: #222019
  Green Headline: #958944
  */

  你可以把这个参考放在你css文档的最上面去帮助你记住什么颜色在你网站中用过。另外在这里你可以定义不同的部分,马上找到他们(也可以用注释加标)这就是那个例子

  /* GENERIC
  HEADER
  SIDEBAR
  FORMS
  TABLES
  FOOTER
  */

  /* =GENERIC
  ----------------------------------------------------*/

  04.知道什么时候添加有条件的注释和运用技巧。

  很多文章写过一些关于问题解决的技巧,有条件的注释是控制ie发布的一个好方法。然后文章又说了其他的一些方面。我同意有条件的注释比在你的css文档里乱丢垃圾要好得多,但是最近我开始慢慢意识到,很多证据表明,这并不是最好的解决办法。

  想象一下。你想在一个元素中设置它的最低高度,但是ie6浏览器却不执行它,所以你知道你能够使用的高度,也同样会被同样的处理。重新建一个样式表,然后把有条件的注释加入到你的标识中,你所有的需要都是要遵循这个规定?保持最低的高度和高度的规则在一起,选择一个小技巧在同样的css文档里,这样会更好吗?在这种情况下,我觉得用这种方法很难奏效。

  另外一件需要考虑的事情就是:如果你风格的定位是多样的,过多的css文档和有条件的注释会让你的调试过程异常痛苦。所以,你需要改变一些事情(可能是上述表述中最低高度的值),你不得不打开不止一个文档来做这个修改。在很多情况下,这对你来说可能不是件大事,但是想象,如果你定义了一些事情,在你主要的css文档中,然后还要重新定义三个不同的ie样式表。

  如果你确定要用有条件的注释,我推荐把注释留一份在你主要的样式表里,让你或者下一位开发者知道这是ie特别规则的存在。这种方法就是当你不得不编辑一个高度或者别的东西的时候。你知道又会有不止一个文档开着。

  如果你确定要使用技巧,记得更新浏览器能够改变接下来的工作,这次技巧的使用对于后面的版本控制也起不到作用。

  05.组织选择及声明

  要一直一直的保持你的css有规则,有组织性。最好把你的选择符进行归类。

  • 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
  • etc.

  最后,把css的声明也按上述进行归类。

  • positioning (with coordinates) styles
  • float/clear styles
  • display/visibility styles webjx.com
  • spacing (margin, padding, border) styles
  • dimensions (width, height) styles
  • typography-related (line-height, color, etc.) styles
  • miscellaneous (list-style, cursors, etc.) styles

  有些人喜欢按照字母顺序来组织。这对我没有任何用处,但是可能会对你有帮助。不管你选择什么样的方法,一定要坚持下去。

  06.创建一个架构。

  当你开始创建css样式表的时候,如果你发现你总是不断重复做同一件事情,那就考虑建一个库或者框架结构吧。一个框架就像是网站骨架一样,而且这回节省你建立网站的时间。你可能会在你的框架中发现以下比较典型的样式表:

  • 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:
  o 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.
  o typography.css - A typography CSS file can define your typefaces, sizes, leading, kerning, and possibly even color.
  o 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. webjx.com

  构建框架其中一个范例就是,由0olav bjørkøy整理的框架蓝图(另外作者还包括杰夫豆和埃里克迈耶)。另外一个很流行的框架就是雅虎的用户界面库。很多开发者都感到这个预建立的框架包含臃肿的标记和css,而且也包含着直接的类名称。

  注意:当我还在起草这篇文章的时候,Jeff Croft已经发布了怎能不爱上css框架的书。在书的注释中他提到的,别人告诉他我强烈反对框架的存在,我不确定这种评论从哪里来的,但是我要声明,事实根本不是那样子,相反我非常喜欢框架。为取得最佳效果,我还是建议你创建自己的框架结构,它能更好的为您或您的工作服务。

  07.确保样式表的可读性和优化性之间的平衡。

  风格格式化因人而异。有的开发者首先创建能够具有可读性的样式表风格,然后在文档还没有完全建好的同时就进行优化(去除评论,位,标签,运输效益等)。这是我想要推荐的一个好技术。然而,如果你不知道在什么情况下去做这些事,就尝试去找一种可以平衡样式表可读性跟优化性的一种风格。Steve Smith在这里有一个很好的建议就可以提供这个技术。

  此外,考虑到用连字符来代替下划线。Microformats用连字符作为分隔标准,某些旧的浏览器不兼容这种连字符。你可以在Underscores in class and ID Names.读到更多关于这方面的知识。

  08.掌握你的文本编辑器。

  就像艺术家熟知他们的专业工具一样,对于一个设计者或者开发者去熟悉他们需要的工具也同样重要。对于css,你再用的时候,你就是个编辑者。

  这有很多文字编辑器可供挑选:TextMate, Coda, BB Edit, TextPad, DreamWeaver,我在这里不是要告诉你要采用哪一种;他们各有利弊,一个好的编辑者会选择适合自己的。然而,一旦你决定使用一种文字编辑器,就要去学习关于这个编辑器的所有知识。找到捷径,然后学习所有的你能学到的技巧和窍门。

  掌握好编辑器能够快速提高你创建样式表的时间,帮助你更有效的完成工作。

  09.使用版本控制

  顺畅的可维护性也是创建精美样式表很重要的一部分。这就是为什么版本控制也会成为你的左臂右膀。这不仅对团队很有帮助,而且也是单独设计师或者开发者的救生员。 www.webjx.com

  有些应用软件是内置软件,所以在资源方面就被控制了。DreamWeaver用的是一种check-in/check-out同步进行的系统(这可以帮助一个开发者在确定已经正确编辑中没有编辑一个文档)。这虽然很便利,但是在某些地方是被限制的。

  Subversion (SVN) or Concurrent Versions System (CVS)是一个不错的工具,他用来管理包括添加选择权,回复,察看修改(这对团队很有帮助---你可以查到谁添加,编辑,或修改了密码,什么时间做的)和解决冲突。Jonathan Snook写了一片很好的文章叫“Hosted Subversion”,你可以通过阅读这篇文章得到更多关于如何更快更简单的创建样式表的信息。

  10. 创造和保持一种风格规范.

  在一些情况下,一种风格规范是一个作者关于语法规则和写作的标准。他也可以用来作为设计,发展和内容的大纲标准。一种风格规范是一本可以很好地阐明排版,表格,色彩,图片大小等的参考手册。

  当你创建了一种风格规范,它会在标记和css上起到有效的作用。这种参考可以作为手册用在发展团队和将来的开发人员。它可以包括界定的布局,其中你可以列出不同的版面设计,并提供相关的标记和风格。


  最后,你也为其他的开发者留下了规范的步骤(比如如核对验证和无障碍环境),来确保更高的质量。

  结论

  作为一个css大师,拥有先进的css技巧还是远远不够的。(即:充分认识层叠,箱模式,浏览器如何工作)。我鼓励你去思考一些你能够不断的持续不变的提高可维护性和功效的方法。想想超越怎样设计文本,甚至这就是你一直需要提高的。要是你的样式表即美观又智能,掌握规整完美的工作流程是必不可少。