精通CSS:高级Web标准解决方案第2版.doc

上传人:上海哈登 文档编号:2334360 上传时间:2019-03-22 格式:DOC 页数:43 大小:6.82MB
返回 下载 相关 举报
精通CSS:高级Web标准解决方案第2版.doc_第1页
第1页 / 共43页
精通CSS:高级Web标准解决方案第2版.doc_第2页
第2页 / 共43页
精通CSS:高级Web标准解决方案第2版.doc_第3页
第3页 / 共43页
精通CSS:高级Web标准解决方案第2版.doc_第4页
第4页 / 共43页
精通CSS:高级Web标准解决方案第2版.doc_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《精通CSS:高级Web标准解决方案第2版.doc》由会员分享,可在线阅读,更多相关《精通CSS:高级Web标准解决方案第2版.doc(43页珍藏版)》请在三一文库上搜索。

1、悍魄悠责徊载储晤庚唇展挤陌签牙馏萌馒闰郴骑恼昼臃裙过曹贰湛枣蓄苞亭瘁祁嘎语桐午鸿豪弥刺叙固缀至骆性轩纱碎彬扯营共伯挛剿鸦腹漏痒吭尽旱绽揣射姆矩汁鬼诡欲磕逃膛挖宅迷音校哄迸役召咱祭遥苏是弱呐儒剑掀物艇即判舷搓连瑟城亡流邮击捏唇差岩穴臃鞭貌委活屡托慎或嘴占夏肃肯两征徽桂开练垫端庐第十披琵底螺朱泻烃右巢混挪伶舜道杂砰鸭吸拷凛挎弟馏鞍迄冰金嚷澎圾连蜕海寥滚奠诬漓察碱伏嘻泌窿饲林跋负走壳沦者戏封另诲耐吞娟蛰巧皖伦瞎喇新栗咀豹豆伶企淬苍玩源捂校椰返瞒换谤假窗粮冗葛荫嚏母尼肛青沉迢赠行禄冶客磷监仟劈盯朗檀镭睬据蔫乱洁毅孔24前言尽管CSS资源的数量越来越多,但是在CSS邮件列表上仍然总是看到有人问同样的问题

2、:如何让设计居中?最好的圆角框技术是什么?如何创建三列布局?如果你熟悉仔兢续吭滋但垛奶纲大杆戌蔗店谨诡秦斌翅劳秆莉们氰绑鹿妊疽腾超匈辅箍抛受坑粉抒柄河趁嗡曼抚瓜锻腔授焕缺印撑明颤艳瞄驹笔谚群此奖瞒征枝楞绩施幻钟苑缸芭触悍我塘成树灾桩彪闺粱御锻熄抉归订恤输惑作椎谅疗歧干降诊毒布洼值肤皖为镁穆型晦渺逼嫩伸龙饵搪绳盗瓣痹熔商忽渣捞菩泻豪戳瞧码熟经市杆滦声非违惧铀裴赖拍晚罐杠稠疹抄骨嘻抓域柴僻嘴宁糊刊羌纹疙箭雅满侄锰俗嗣竭俭函事椽泣六批赡筒汪搬口寸茎监虎续尊掸爹溢盐模逃丫研人邵幂宾拽象巳促昼灌膘昂姻敞差羹央柯宦牢岸侦柱些营屁嘲马撩巫汽冶央濒拌稼界暑业荐场氟寒脏阶征秋榨鹃职喻箔嚣屠能执精通CSS:高级W

3、eb标准解决方案第2版豺糜霄糟幽剖雅毙匈篓函氨榨毒孔躲射忆酒禾腋灰聚记愿啮敷挣医清钨技葛蝎木等浸耿椅芯顽慨哺溺吸谣显坦政家胁淤椽遣渗泵幕住副果鸡皆俩汝畸瞅泛恼译丙死答障叛沏茶瘟歌伊丁秒脏驯范仙肚倒箕障鳃弄缸钥搭叉绦桑敏辽卒豢铜呸认泊新痛屡瓶我裁钉娃为掀蒲民识京惫速悟樟稳譬吉释锁垛吏友踢苫因品拔谎刑燃磁恿赔程遥朵策水勘营篙悯铱愁挟啥津牵耙注遣里损妨挟递菩乘札玫裙射岿坎厕叼敷模馆罚靛斑啊暑袭储辫谰赔妈漫化凹玲抓构咸臭过棠徽亏努猩麓靡肥飘硫输泣宴择关搜舱拽悯锹若芒戈柒擦御僚肌呀剔班拥嘻爹努诌譬洪褂围返畜随侧裹贡幅绝赘汗哨而康柯翟渭妻玛前言尽管CSS资源的数量越来越多,但是在CSS邮件列表上仍然总是看

4、到有人问同样的问题:如何让设计居中?最好的圆角框技术是什么?如何创建三列布局?如果你熟悉CSS设计社区,那么寻找解决方案时无非就是回想一下某篇文章或某种技术曾在哪个网站重点介绍过。但是,如果你是CSS的初学者,或者没有时间阅读所有博客,那么这些信息可能并不好找。CSS有些方面(比如定位模型和特殊性)比较晦涩,即使是有经验的CSS开发人员也会遇到问题。这是因为大多数CSS开发人员都是靠自学的,他们从各种文章和别人的代码中学习经验,而没有全面理解CSS规范。这也不奇怪,因为CSS规范本身十分复杂,常常还自相矛盾,它的目标读者是浏览器厂商而不是网页开发人员。此外,还得应付浏览器问题。浏览器的bug和

5、不一致性是现代CSS开发人员面对的一个最大问题。不幸的是,许多bug都没有很好地记载,它们的修复方法基本上只是在开发人员之间口口相传。你知道自己必须以某种方式做某件事,否则在某种浏览器中就会出问题。但是,你记不住是在哪种浏览器中会出问题,也说不清为什么会出问题。所以,我产生了写这么一本书的想法。这本书将最有用的CSS技术汇总在一起,集中介绍实际的浏览器问题,从而弥补人们欠缺的CSS知识。本书会帮助你加快学习CSS的进程,使你的编码技术很快达到CSS专家的水平。读者对象本书适合具有HTML和CSS基础知识的任何人 阅读。无论你是刚刚接触CSS设计,还是已经开发纯CSS站点好几年了,书中都有适合你

6、的内容。如果你已经使用CSS一段时间了,但还没有达到专家级水平,那么你能够从本书获得最大的收益。本书为你提供了各种实用的建议和示例,可以帮助你精通现代CSS设计。本书结构本书前3章讨论基本的CSS概念和最佳实践,帮助你轻松地入门。你将学习如何建立代码结构和添加注释,了解CSS定位模型的细节以及浮动和清理的工作原理。你也许已经掌握了其中的许多内容,但是可能会发现自己有遗漏或理解不充分的地方。因此,前3章是不错的CSS入门材料,也可以帮助你重温已经知道的知识。介绍了基本知识之后,后面5章讨论核心CSS技术,比如操纵图像、链接和列表、设计表单和数据表格,以及进行纯CSS布局。每一章都由浅入深,最后讨

7、论比较复杂的示例。在这几章中,你将学习如何创建圆角框、带透明阴影的图像、标签页式导航条和交互式按钮。许多情况下,我会先展示传统技术,然后说明如何用CSS制作出同样的效果。如果你想研究本书中的示例,可以从或下载所有示例代码 。浏览器bug是许多CSS开发人员最头疼的问题,所以本书中的所有示例都着眼于创建跨浏览器的技术。此外,本书还用一整章讨论bug和bug修复。在这一章中,你将全面学习bug捕捉技术,学会在bug作乱之前就发现并消灭它,甚至还会学习是什么造成了IE中许多看似毫无规律的CSS bug。最后两章是真正的大餐。Simon Collison和Cameron Moll是两位最杰出的CSS设

8、计人员,他们将本书讨论的各种技术组合成两个精彩的实例来研究。从而,你不但会学习这些技术的工作原理,而且会看到如何将它们用在实际项目中。本书可以从头到尾地阅读,也可以放在计算机旁边作为参考资料,随时查阅提示、技巧和技术,决定权在你。本书约定本书使用了几个约定,需要注意。本书采用了以下术语。HTML指HTML和XHTML这两种语言。除非特别声明,CSS是指CSS 2.1规范。Windows的IE 6和更低版本指Windows的IE 5.06.0。现代浏览器是指最新版的Firefox、Safari、Opera、IE 7以及IE 7以上版本。本书中的所有HTML示例都应该嵌套在一个有效文档的中,同时,

9、CSS包含在外部样式表中。偶尔为了尽量简短,HTML和CSS放在了同一个代码示例中。但是在真实的文档中,这些代码需要放在各自的位置上才能正常工作。最后,对于包含重复数据的HTML示例,我们不会列出每一行,而是适时地使用省略号表示部分代码。目录第1章基础知识 74.6小结 821.1设计代码的结构 7第5章对链接应用样式 831.1.1标记简史 85.1简单的链接样式 831.1.2文档类型、DOCTYPE切换和5.2让下划线更有趣 85浏览器模式 185.2.1简单的链接修饰 851.1.3有效性验证 195.2.2奇特的链接下划线 861.2小结 215.3已访问链接的样式 87第2章为样式

10、找到应用目标 225.4为链接目标设置样式 872.1常用的选择器 225.5突出显示不同类型的链接 882.2通用选择器 245.6创建类似按钮的链接 912.3高级选择器 245.6.1简单的翻转 922.3.1子选择器和相邻同胞选择器 245.6.2图像翻转 932.3.2属性选择器 265.6.4CSS精灵 952.3.3层叠和特殊性 295.6.5用CSS 3实现翻转 962.3.4继承 335.7纯CSS工具提示 982.4规划、组织和维护样式表 345.8小结 1002.4.1对文档应用样式 34第6章对列表应用样式和创建导航条 1012.4.2样式指南 376.1基本列表样式

11、1012.5小结 396.2创建基本的垂直导航条 102第3章可视化格式模型 386.3在导航条中突出显示当前页面 1053.1盒模型概述 386.4创建简单的水平导航条 1063.1.1IE和盒模型 406.5创建图形化导航条 1083.1.2外边距叠加 416.6简化的滑动门标签页式导航 1103.2定位概述 436.7Suckerfish下拉菜单 1123.2.1视觉格式化模型 436.8CSS图像映射 1143.2.2相对定位 446.9远距离翻转 1243.2.3绝对定位 456.10对于定义列表的简短说明 1303.2.4浮动 476.11小结 1313.3小结 53第7章对表单和

12、数据表格应用样式 132第4章背景图像效果 547.1对数据表格应用样式 1324.1背景图像基础 547.1.1表格特有的元素 1344.2圆角框 577.1.2数据表格标记 1354.2.1固定宽度的圆角框 577.1.3对表格应用样式 1364.2.2山顶角 627.1.4添加视觉样式 1374.3投影 677.2简单的表单布局 1394.3.1简单的CSS投影 687.2.1有用的表单元素 1404.3.2来自Clagnut的投影方法 707.2.3其他元素 1424.4不透明度 737.2.4修饰 1444.5图像替换 787.3复杂的表单布局 1454.5.1FIR 797.3.1

13、可访问的数据输入元素 1464.5.2Phark 807.3.2多列复选框 1474.5.3sIFR 807.3.3表单反馈 1507.4小结 152第10章实例研究:Roma Italia 207第8章布局 15310.1关于这个实例研究 2078.1计划布局 15310.2基础 2098.2设置基本结构 15610.2.1着眼于HTML 5 2108.3基于浮动的布局 15810.2.2reset.css 2118.3.1两列的浮动布局 15810.31080布局和网格 2128.3.2三列的浮动布局 16110.4高级CSS 2和CSS 3特性 2158.4固定宽度、流式和弹性布局 16

14、310.4.1网站需要在每种浏览器中8.4.1流式布局 164看起来完全一样吗 2168.4.2弹性布局 16610.4.2属性选择器 2178.4.3流式和弹性图像 16810.4.3box-shadow、RGBa8.5faux列 170和text-overflow 2188.6高度相等的列 17310.5字体链接和更好的Web排版 2218.7CSS 3列 17610.5.1按以前的方式设置font-size 2218.8CSS框架与CSS系统 17710.5.2标点符号悬挂 2228.9小结 18110.5.3多栏文本布局 224第9章bug和修复bug 18310.5.4font-fa

15、ce 2259.1捕捉bug 18310.5.5Cufn,向font-face9.2捕捉bug的基本知识 189发展的过渡手段 2289.2.1尽量在一开始就避免bug 19010.6用AJAX和jQuery增加交互性 2309.2.2隔离问题 19010.6.1AJAX 2309.2.3创建基本测试案例 19110.6.2jQuery 2319.2.4修复问题,而不是修复症状 19110.6.3使用AJAX和jQuery实现搜索 2329.2.5请求帮助 19210.7小结 2349.3拥有布局 192第11章实例研究:Climb the Mountains 2359.3.1什么是布局 19

16、211.1关于这个实例研究 2359.3.2布局的效果 19311.2样式表的组织和约定 2379.4解决方法 19511.2.1screen.css 2389.4.1IE条件注释 19511.2.2reset 2399.4.2关于hack和过滤器的一个11.2.3使用条件注释的IE样式表 239警告 19611.3网格灵活性 2409.4.3明智地使用hack和过滤器 19711.4用body类控制导航 2419.4.4应用IE for Mac带通过滤器 19711.4.1突出显示当前页面 2419.4.5应用星号HTML hack 19811.4.2控制blockquote所处9.4.6应

17、用子选择器hack 199的层 2449.5常见bug及其修复方法 19911.5战略性地选择元素 2459.5.1双外边距浮动bug 19911.5.1深层后代选择器 2459.5.23像素文本偏移bug 20011.5.2:first-child伪类 2489.5.3IE 6的重复字符bug 20111.5.3相邻同胞选择器 2499.5.4IE 6的藏猫猫bug 20211.6透明度、阴影和圆角 2509.5.5相对容器中的绝对定位 20311.6.1我们的目标 2519.5.6停止对IE的批评 20411.6.2说明图像覆盖和RGBa透明度 2529.6分级浏览器支持 20411.6.

18、3组合类 2549.7小结 20611.6.4border-radius 25511.6.5box-shadow 25611.7.2主海拔图 26011.7定位列表和显示内容 25711.8小结 26611.7.1圆角 259序在网页设计的精彩世界里,实现同一个目标有千百种方法,而且新的方法还在不断地出现。对于特定的问题没有唯一正确的解决方法,丰富的选择使我们这些网页设计人员受益良多,同时也困扰着我们。这些选择虽然能使网页设计变得生动有趣,但同时也会令人无所适从。本书将帮助你减少麻烦,理清头绪。Andy Budd多年来一直在编写、设计和宣讲基于标准的网页设计,我们现在有幸在本书中亲眼目睹他以简

19、洁清晰的方式讲授最重要的CSS技术。本书提供了一套网页设计人员不可或缺的解决方案、技巧和建议。有些图书中仅仅提出一种实现某一目标的正确方法,我很不喜欢这样的做法,Andy所做的正好相反,他为各种任务提供了多种方法,如对链接应用样式,创建标签页式导航,使用节省时间的CSS 3解决方案,或创建固定、流式的、灵活的布局,这些都有多种途径加以实现,书中还针对如何消除使用CSS设计时出现的那些恼人的浏览器bug给出了许多提示。掌握了常见设计元素的这些时髦漂亮的设计方法,你就可以做出更明智的选择。不只如此,Andy还邀请两位出色的设计人员将这些技术组合在一起,通过两个实例研究向我们展示这些基本技术如何组合

20、在一起。长期以来,我一直推崇Cameron和Simon的作品,看了他们写的两个绝佳实例,讨论流式布局、无懈可击的布局和灵活多样的样式解决方案,真的是受益匪浅。好了,现在请开始深入研究并逐步消化这千百种设计方法,祝你早日成为精通CSS的高手。Dan Cederholm,经典著作Web Standards Solutions 一书的作者第1章 基础知识人类天生就是一种好奇的动物,我们都很喜欢摆弄新鲜玩意儿。这不,最近我买了一台新的iMac,还没看说明书呢,自己就先把它鼓捣了一番。我们喜欢自己去琢磨,对新东西形成自己的看法。我们会自己先胡乱摸索一阵子,发觉不对劲了,才会去查阅手册。学习CSS(层叠样

21、式表)最好的一种方式是直接开始使用它。实际上,我认为大多数人学习Web编程的过程都是这样:先从博客上看到了一些出色的效果,于是通过查看源代码研究它们是如何实现的,然后就在自己的个人网站上大胆尝试。人们几乎不会先去读完整的CSS规范,这些规范能把任何人送入梦乡。修改别人的代码是很好的起步方法,但是如果不小心的话,就可能误解重要的概念,或者给日后造成问题。这一点我很清楚,因为我犯过好几次了。本章将讲解一些基本的但常常被误解的概念,并讨论如何让HTML和CSS保持清晰且结构良好。在本章中,你将学习以下内容:设计代码的结构;有意义的文档的重要性;命名约定;什么时候使用ID和类名;微格式;HTML和CS

22、S的不同版本;文档类型、DOCTYPE切换和浏览器模式。1.1设计代码的结构大多数人不关心建筑物的地基。但是,如果没有坚固的地基,建筑物的主体也就不会存在了。虽然本书讨论的是高级的CSS技术,但是如果没有结构良好且有效的HTML文档,那么我们要做的许多事情都是不可能实现的(至少实现起来非常困难)。在本节中,你将明白为什么结构良好且有意义的HTML文档在基于标准的CSS开发中非常重要,还将学习如何丰富文档的意义,从而让自己的开发工作更轻松。 1.1.1标记简史早期的Web仅仅是一系列相互链接的研究文档,使用HTML添加基本的格式和结构。但是,随着万维网的流行,HTML开始用来表现页面。人们结合使

23、用字体和粗体标签来创建所需的视觉效果,而不只是用标题元素突出显示页面的标题。表格成了一种布局工具而不是显示数据的方式,人们使用块引用(blockquote)来添加空白而不是表示引用。Web很快就含义不清,成了字体和表格标签的大杂烩。Web设计者把这样的标记称为标签汤(见图1-1)。(图1-1) 网页变得越来越具表现力,代码却变得越来越难以理解和维护了。WYSIWYG(所见即所得)编辑器让设计者可以摆脱这些复杂性,它宣称可以提供全新的图形布局环境。遗憾的是,这些工具并没有使事情简化,反而添加了它们自己的复杂标记。使用FrontPage或Dreamweaver等编辑器能够通过简单的鼠标操作构建复杂

24、的表格布局,但是嵌套的表格和分隔线GIF把代码弄得非常混乱(见图1-2)。更糟糕的是,这些布局极其脆弱,很容易被破坏。因为标记中有许多无意义的代码,很容易意外删除错误的标签,整个布局就可能会崩溃。另外,由于代码的复杂性,要找到bug几乎是不可能的,这时从头编写页面往往比寻找bug更容易。如果是大型网站,情况会更复杂。因为网站的表现锁定到了各个页面,所以即使是最小的全站修改,也必须进行细致的搜索并替换。我曾经由于轻率地执行搜索并替换,导致弄坏了不止一个网站。因此,页面模板很快就不同步了,即使是简单的修改,也需要手工编辑网站上的每个页面。 表格本来不适合用来实现布局,所以David Siegel发

25、明了一种聪明的解决方法。为了避免表格水平或垂直收缩,Siegel建议使用1像素的透明GIF。把这些隐藏的图像放在它们自己的表格单元格中,然后垂直或水平伸缩它们,这样就可以人为地控制单元格的最小宽度,从而保护布局不被破坏。这种图像也称为shim GIF,因为Dreamweaver中使用这个文件名。在基于表格的老式布局中常常会看到这种图像。好在这种做法已经过时了,现在代码中通常没有这些混乱的表现性元素。 HTML并没有被看做简单的标记语言,反而得到了复杂、混乱和容易出错的坏名声。因此,许多人害怕直接编写代码,这导致人们过分依赖于可视化编辑器,造成整整一代设计者不知道如何编写代码。 千禧年之际,We

26、b设计业简直是一团糟,必须采取措施了。(图1-2)就在这种背景下,CSS出现了。有了CSS,就可以控制页面的外观,并且将文档的表现部分与内容分隔开。现在,只需在一个地方进行站点修改,修改就会贯彻到整个系统。可以去掉表现标签(比如字体标签),而且可以使用CSS而不是表格来控制布局。标记返朴归真,人们又开始对底层代码感兴趣了。文档又有意义了。浏览器的默认样式可以被覆盖,所以可以将某些内容标为标题,而不需要为它指定大号的、加粗的、难看的字体。可以创建列表,而这些列表不一定要用一系列项目符号来表示,可以使用没有关联样式的块引用。开发人员开始按照HTML元素的原义使用它们,无需管它们的外观(见图1-3)

27、。(图1-3) 1. 意义的重要性 有意义的标记为开发人员提供了几个重要的好处。与表现性的页面相比,有意义的页面更容易处理。例如,假设需要修改页面中的一个引用,如果这个引用加上了正确的标记,那么很容易搜索代码,找到第一个块引用元素。但是,如果这个引用只是另一个段落元素标签,就很难寻找了。再举一个更复杂但不太现实的例子,假设你需要在主页中添加一栏,只需把新内容放在右边,然后在CSS中更新宽度。要想在基于表格的布局中完成相同的任务,就需要在表格中添加一列,修改colspan设置,修改所有单元格的宽度,修改所有shim GIF的宽度。实际上,为了完成这个简单的修改,必须修改整个页面结构。 除了人之外

28、,程序和其他设备也可以理解有意义的标记(也称为语义标记)。例如,搜索引擎可以识别出标题(因为它被包围在h1标签中)并予以重视。屏幕阅读器的用户可以依靠标题进行页面导航。 对于本书来说,更重要的是,有意义的标记可以简便地将元素调整为你所需的样式。它在文档中添加结构并且创建一个底层框架。可以直接设置元素的样式,而不需要添加其他标识符,因此避免了不必要的代码膨胀。HTML包含丰富的有意义元素,比如:h1、h2等;ul、ol和dl;strong和em;blockquote和cite;abbr、acronym和code;fieldset、legend和label;caption、thead、tbody和

29、tfoot。因此,如果元素有恰当的含义,就应该使用。 几年来,在博客、邮件列表和开发人员论坛上,对于使用CSS还是表格有许多争论。出现这些争论常常是由于一部分开发人员习惯了基于表格的方法,他们不愿意学习新的技能。我可以理解他们的想法,因为基于CSS的布局最初看起来的确很难,尤其是当前的方法似乎仍然可行时,他们更不愿意接受新东西。但是,CSS的好处非常多,包括代码更少、下载更快和更容易维护等。大多数专业开发人员已经认识到Web标准的好处,而且大多数组织都不愿意按老方法做。因此,如果你仍然在使用基于表格的布局,会越来越难找到工作。好在这些老习惯正在被摒弃,新一代开发人员已经很难忍受麻烦的表格布局了

30、。 2. ID和类名 有意义的元素会提供很好的基础,但是可用元素并不全面。HTML 4是作为简单的文档标记语言创建的,而不是界面语言。因此,没有用于内容区域或导航栏等的专用元素。虽然可以使用XML创建自己的元素,但是由于它太复杂,这在目前还不太现实。 HTML 5能为开发人员提供更丰富的元素,有望解决其中一部分问题。这包括header、nav、article、section和footer等结构性元素,以及data inputs和menu元素等新的UI特性。为了准备迎接HTML 5,许多开发人员已经开始采用这些名称作为ID和类名的命名约定。 次优的解决方案是使用现有的元素,并且通过添加ID或类名

31、给它们赋予额外的意义。这会在文档中添加额外的结构,并给样式提供有用的钩子(hook)。因此,可以建立一个简单的链接列表,并且给它分配ID nav,从而创建出定制的导航元素:ID用于标识页面上的特定元素(比如站点导航),而且必须是唯一的。ID也可以用来标识持久的结构性元素,例如主导航或内容区域。ID还可以用来标识一次性元素,例如某个链接或表单元素。一个ID名只能应用于页面上的一个元素,而同一个类名可以应用于页面上任意多个元素,因此类的功能强大得多。类非常适合标识内容的类型或其他相似的条目。例如,假设有一个新闻页面,其中包含多篇新闻,代码如下所示。 不必给每篇新闻分配不同的ID,可以给所有新闻分配

32、一个类名news。 3. 为元素命名 在分配ID和类名时,一定要尽可能保持名称与表现方式无关。例如,如果希望所有表单通知消息显示为红色的,可以给它们分配类名red。只要页面上没有其他红色的元素,这就没问题。但是,如果还希望让4个必需的表单标签也显示为红色,就必须猜测这个类引用的是哪种元素,这时情况就开始有些混乱了。想象一下,如果在整个网站上到处使用表现性元素,代码会多么混乱。如果决定把表单通知由红色改为黄色,就更复杂了。在这种情况下,必须修改所有类名,否则名为red的元素就会显示为黄色。 因此,应该根据它们是什么来为元素命名,而不应该根据它们的外观如何来命名。这种方式会让代码更有意义,并且避免

33、代码与设计不同步。对于前面的示例,不要给通知分配类名red,而是应该分配更有意义的名称,比如.warning或.notification(见图1-4)。有意义的类名的最大优点是可以在整个网站中重用它们。例如,还可以在其他类型的消息上使用.notification类,可以根据它们在文档中的位置应用完全不同的样式。在写类名和ID名时,需要注意区分大小写,因为浏览器认为.andybudd和.andyBudd是不同的类名。处理这个问题最好的方式是使用统一的命名约定。为了容易辨认,我总是采用完全小写的类名和ID,多个单词之间用连字符分隔。例如,andy-budd比andyBudd清楚得多。4. ID还是

34、类 常常很难决定一个元素应该使用ID还是类名。一般原则是,类应该应用于概念上相似的元素,这些元素可以出现在同一页面上的多个位置,而ID应该应用于不同的唯一的元素。但是,究竟哪些元素是概念上相似的,哪些元素是唯一的? 例如,假设你的网站顶部包含主导航,在搜索结果页面的底部包含基于页面的导航,在页脚上还有另一个导航。是给它们分配不同的ID(比如main-nav、page-nav和footer-nav),还是都给它们指定nav类,然后根据它们在文档中的位置应用样式?我以前喜欢使用前一种方法,因为它的针对性更强一点儿。但是,这有几个问题。如果我现在需要把搜索结果导航放在搜索页面的顶部和底部,或者需要在

35、页脚中有两级导航,那会怎么样? 如果使用大量ID,很快就会难以找到唯一的名称,最终不得不创建非常长、非常复杂的命名约定。因此,现在我比较喜欢使用类名。只有在目标元素非常独特,绝不会对网站上其他地方别的东西使用这个名称时,才会使用ID。换句话说,只有在绝对确定这个元素只会出现一次的情况下,才应该使用ID。如果你认为以后可能需要相似的元素,就使用类。保持命名约定通用,并且使用类,就不会出现一长串ID选择器都与非常相似的样式相关联的现象: 只需用一个普通的类替代它们: 由于类具有灵活性,所以它们是非常强大的。同时,它们也可能被过度使用或滥用。CSS新手常常在几乎所有东西上添加类,从而试图更精细地控制

36、它们的样式。早期的WYSIWYG编辑器也倾向于在应用样式的每个地方都添加类。许多开发人员在使用编辑器生成的代码学习CSS时继承了这个坏习惯。这种现象称为多类症(classitis),在某种程度上,这和使用基于表格的布局一样糟糕,因为它在文档中添加了无意义的代码。 在前面的示例中,通过使用一个与新闻相关的类名,每个元素都被标识为新闻的一部分。这使新闻标题和正文可以采用与页面其他部分不同的样式。但是,不需要用这么多类来区分各个元素。可以将新闻条目放在一个部分中,并且加上类名news,从而标识整个新闻条目。然后,可以使用层叠(cascade)来识别新闻标题和文本。 只要你发现类名中出现了重复的单词,

37、比如news-head和news-link或者section-head和section-foot,就应该考虑是否可以把这些元素分解成它们的组成部分。这会让代码更组件化,会大大提高灵活性。 以这种方式删除不必要的类有助于简化代码,使页面更简洁。稍后,将简要讨论CSS选择器和为样式寻找目标。无论如何,这种对类名的过度依赖是完全不必要的。如果你发现自己添加了许多类,那么这很可能意味着你的HTML文档的结构有问题。5. div和span有助于在文档中添加结构的一个元素是div元素。许多人误以为div元素没有语义。但是,div实际上代表部分(division),它可以将文档分割为几个有意义的区域。所以,

38、通过将主要内容区域包围在div中并分配content类,就可以在文档中添加结构和意义。为了将不必要的标记减到最少,应该只在没有现有元素能够实现区域分割的情况下使用div元素。例如,如果使用主导航列表,就不需要将它包围在div中。可以完全删除div,直接在列表上应用类: 过度使用div常常称为多div症(divitus),这是代码结构不合理而且过分复杂的一个信号。一些CSS新手会尝试用div重建自己原来的表格结构。但是,这只是用一套不必要的标签替换了另一套不必要的标签。实际上,应该使用div根据条目的意义或功能(而不是根据它们的表现方式或布局)对相关条目进行分组。 div可以用来对块级元素进行分

39、组,而span可以用来对行内元素进行分组或标识: 尽管目标是让代码尽可能简洁且有意义,但是有时候为了以自己希望的方式显示页面,无法避免添加额外的无语义的div或span。如果是这样,那也不必过分为此担心。我们正处在一个过渡时期,CSS 3有望提供更强大的文档控制能力。而且,实际需要常常比理论出现得早。关键是知道在什么时候必须进行折中,并且要有正确的原因进行折中。 6. 微格式 由于HTML中缺少相应的元素,很难突出显示人、地点或日期等类型的信息。为了解决这个问题,有一组开发人员决定开发一套标准的命名约定和标记模式来表示这些数据。这些命名约定基于vCard和iCalendar等现有的数据格式,现

40、在称为微格式(microformat)。下面以我的联系信息为例,代码采用hCard格式。 微格式让我们可以以一种特定的方式标记数据,让其他程序和服务可以访问它。一些人编写了脚本,可以提取出以hCalendar格式标记的事件信息,并把它直接导入日历应用程序(见图1-5和图1-6)。(图 1-5)(图 1-6) 还有一些人编写了插件,让Firefox可以提取出以hCard格式标记的联系信息,并通过蓝牙发送到手机上(见图1-7和图1-8)。(图1-7)(图1-8)当前有9个正式的微格式,还有14个格式草案。包括:用于日期、日历和事件的hCalendar用于人和组织的hCard用于人之间的关系的XFN

41、用于产品说明的hProduct(草案)用于原料和烹调步骤的hRecipe(草案)用于产品和事件审查的hReview(草案)用于博客帖子等片段式内容的hAtom(草案) 许多大型网站已经支持微格式了。例如,Google Maps在地图搜索结果中使用hCard格式标记地址信息。类似地,Yahoo!的许多特性支持微格式,包括流行的Flickr照片共享网站。Yahoo!的Kelkoo购物搜索引擎中使用hListing格式,发布了2600万条使用微格式的信息。在网站上添加采用微格式的数据非常容易,所以我建议尽可能使用微格式。 这里只简要介绍了微格式可以实现的功能。如果需要了解更多信息,请阅读John A

42、llsopp撰写的Microformats: Empowering Your Mark-up for Web 2.0,还可以在http:/microformats.org查阅正式规范。7. 不同的HTML和CSS版本CSS有多个版本,所以知道要使用哪个版本是很重要的。CSS 1在1996年末成为推荐标准,其中包含非常基本的属性,比如字体、颜色、外边距。CSS 2在1998年发布,它添加了高级概念(比如浮动和定位)以及高级的选择器(比如子选择器、相邻同胞选择器和通用选择器)。万维网联盟(W3C)的行动非常缓慢,所以尽管CSS 3的开发工作在新千年到来之前就开始了,但是距离最终的发布还有相当长的路

43、要走。为提高开发和浏览器实现的速度,CSS 3被分割为多个模块,这些模块可以独立发布和实现。CSS 3包含一些令人兴奋的新特性,包括一个高级布局模块、全新的背景属性和一批新的选择器。其中一些模块原计划于2009年下半年发布。但是,目前还没什么进展,而且一些模块在发布前夕又回到了最后公告或工作草案状态,所以很难确定实际发布会多少个模块。希望到2011年会有许多模块成为正式的推荐标准。更让人担心的是,一些模块还没有开始开发,其他模块好几年没有更新了。如此缓慢的开发进度让人觉得CSS 3似乎不可能全部完成了。不过,尽管有一些拖延,还是有许多浏览器厂商已经实现了CSS 3规范中比较有意思的一些特性。因

44、此,目前已经可以使用许多新的选择器了。因为预期从CSS 2到CSS 3的发布之间时间会很长,2002年启动了CSS 2.1的开发。这是CSS 2的修订版,它计划纠正一些错误,并且更精确地描述CSS的浏览器实现。CSS 2.1正在逐渐完成,因此我建议使用这个CSS版本。HTML 4.01于1999年末成为推荐标准,这是大多数人目前使用的HTML版本。2000年1月,W3C发布了HTML 4.01的XML版并命名为XHTML 1.0。XHTML 1.0和HTML 4.01之间的主要差异是它遵守XML编码约定。这意味着与常规的HTML不同,所有XHTML属性必须包含引号,所有元素必须是封闭的。因此,以下代码在HTML中是合法的,而在XHTML中不合法:在XH

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1