精通CSS--高级Web标准解决方案(最有用的CSS技术汇总,解密业界大师绝技)
基本信息
- 作者: (英)Andy Budd, Cameron Moll, Simon Collison
- 译者: 陈剑瓯
- 丛书名: 图灵程序设计丛书·Web开发系列
- 出版社:人民邮电出版社
- ISBN:7115153167
- 上架时间:2006-10-19
- 出版日期:2006 年11月
- 开本:16开
- 页码:212
- 版次:1-1
- 所属分类:
计算机 > 数码/设计 > CSS
计算机 > 软件与程序设计 > 网络编程 > 综合
编辑推荐
2006年度Amazon十佳畅销书之一
Amazon第一CSS畅销书,最有用的CSS技术汇总,解密业界大师绝技...
推荐阅读
内容简介回到顶部↑
本书将最有用的css技术汇总在一起,在介绍基本的css概念和最佳实践之后,讨论了核心的css技术,例如图像、链接、列表操纵、表单设计、数据表格设计以及纯css布局。每一章内容由浅入深,直到建立比较复杂的示例。之后本书用两章讨论招数、过滤器、bug和bug修复,最后由simon collison和cameron moll两位杰出的css设计人员,将书中讨论的许多技术组合起来,给出了两个实例研究,这两个实例研究将书中讨论的许多技术组合起来,使读者不仅理解工作原理,而且能够学到如何将它们应用在实际项目中,迅速精通css,成为css专家。本书还集中介绍了现实的浏览器问题,是弥补css知识欠缺不可或缺的参考书。本书弥补了一直以来css图书的空白。正因如此,英文版出版后,一时洛阳纸贵,多次重印,并迅速登上amazon图书排行榜前列,最高时甚至与哈里·波特并驾齐驱,创造了计算机图书的销售奇迹。
本书适合具有(x)html和css基本知识的任何网页设计人员阅读。
“andy budd对css设计的底层技术和当代方法有着深刻的理解,而且他更善于将这些知识娓娓道来。在跨浏览器支持问题上,无人可以望其项背。”
——molly e.holzschlag,web标准项目负责人,w3c html工作组专家
“andy budd多年来一直在编写、设计和宣传基于标准的网页设计,我们现在有幸在本书中看到他以简洁清晰的方式讲授最重要的css技术。本书提供了一套网页设计人员不可或缺的解决方案、技巧和经验。”
——dan cederholm,web standards solutions的作者
本书适合具有(x)html和css基本知识的任何网页设计人员阅读。
“andy budd对css设计的底层技术和当代方法有着深刻的理解,而且他更善于将这些知识娓娓道来。在跨浏览器支持问题上,无人可以望其项背。”
——molly e.holzschlag,web标准项目负责人,w3c html工作组专家
“andy budd多年来一直在编写、设计和宣传基于标准的网页设计,我们现在有幸在本书中看到他以简洁清晰的方式讲授最重要的css技术。本书提供了一套网页设计人员不可或缺的解决方案、技巧和经验。”
——dan cederholm,web standards solutions的作者
作译者回到顶部↑
目录回到顶部↑
第1章 基础知识.
1.1 设计代码的结构
1.2 为样式找到目标
1.3 规划、组织和维护样式表
1.4 小结
第2章 可视化格式模型
2.1 框模型概述
2.2 定位概述
2.3 小结
第3章 背景图像和图像替换
3.1 背景图像基础
3.2 圆角框
3.3 阴影
3。4 图像替换
3.5 小结
第4章 对链接应用样式
4.1 简单的链接样式
4.2 让下划线更有趣
4.3 突出显示不同类型的链接
4.4 创建按钮和翻转
1.1 设计代码的结构
1.2 为样式找到目标
1.3 规划、组织和维护样式表
1.4 小结
第2章 可视化格式模型
2.1 框模型概述
2.2 定位概述
2.3 小结
第3章 背景图像和图像替换
3.1 背景图像基础
3.2 圆角框
3.3 阴影
3。4 图像替换
3.5 小结
第4章 对链接应用样式
4.1 简单的链接样式
4.2 让下划线更有趣
4.3 突出显示不同类型的链接
4.4 创建按钮和翻转
前言回到顶部↑
尽管CSS资源的数量越来越多,但是在CSS邮件列表上仍然反复看到同样的问题:如何让设计居中?最好的圆角框技术是什么?如何创建三列布局?如果你熟悉CSS设计社区,那么往往会想起提供了某篇文章或某种技术的网站。但是,如果你是CSS的初学者,或者没有时间阅读所有博客,那么这些信息可能并不好找。.
在CSS的某些比较晦涩的方面(比如定位模型和特殊性),即使是有经验的CSS开发人员也会遇到问题。这是因为大多数CSS开发人员是靠自学的,他们从文章和别人的代码中学习经验,而没有全面理解规范。而且许多人认为,CSS规范是复杂的并且常常自相矛盾,是为浏览器厂商而不是为网页开发人员编写的。
此外,还有浏览器问题。浏览器的bug和不一致性是现代CSS开发人员面对的最大问题之一。不幸的是,许多bug都没有良好的文档记录,它们的修复方法基本上只是在开发人员之间口口相传。你必须知道以某种方式做某件事,否则在某种浏览器中就会出问题。但是,你记不住是哪种浏览器以及为什么会出问题。
所以,就需要有一本书将最有用的CSS技术汇总在一起,并且集中介绍现实的浏览器问题,从而弥补人们CSS知识中的欠缺。本书会帮助你加快学习CSS的过程,使你的代码很快达到CSS专家的水平。
读者对象
本书适合具有(X)HTML和CSS基本知识的任何人:。无论你是刚刚接触CSS设计,还是已经开发纯CSS站点好几年了,本书中都有适合你的内容。如果你已经使用CSS一段时间了,但还不是专家,那么你能够从本书获得最大的收益。本书充满了实用的现实建议和示例,可以帮助你精通现代CSS设计。..
本书结构
本书的前两章讨论基本的CSS概念和最佳实践,帮助你轻松地入门。你将学习如何建立代码结构和加注释、CSS定位模型的细节以及浮动和清理的工作原理。你可能已经掌握了其中的许多内容,但是可能会发现自己有遗漏或理解不充分的地方。因此,前两章是不错的CSS入门材料,也可以帮助你回顾已经知道的知识。
介绍了基本知识之后,后面五章讨论核心CSS技术,比如图像、链接、列表操纵、表单设计、数据表格设计以及纯CSS布局。每一章都由浅入深,直到建立比较复杂的示例。在这些章节中,你将学习如何创建圆角框、带透明阴影的图像、标签页式导航条和flickr风格的翻转。如果你想研究本书中的示例,可以从WWW.turingbook.com或WWW.friendsofed.com下载所有示例代码。
浏览器bug是许多CSS开发人员最头疼的问题,所以本书中的所有示例都关注创建跨浏览器的技术。不只如此,本书还用两章讨论招数(hack)、过滤器、bug和bug修复。在这两章中,你将学习一些最常用的过滤器,什么时候应该使用它们以及什么时候应该避免使用它们。还要学习bug捕捉技术,以及如何在bug造成问题之前发现并修复它们。甚至还会学习是什么造成了Microsoft IE中许多看似无规律的CSSbug。
最后两章是真正的“大餐”。Simon Collison和Cameron Moll是两位最杰出的CSS设计人员,他们将本书讨论的许多技术组合成两个实例研究。所以你不但将学习这些技术的工作原理,而且要学习如何将它们用在实际项目中。
本书可以从头到尾地阅读,也可以放在计算机旁边作为提示、技巧和技术的参考资料。这由你决定。...
在CSS的某些比较晦涩的方面(比如定位模型和特殊性),即使是有经验的CSS开发人员也会遇到问题。这是因为大多数CSS开发人员是靠自学的,他们从文章和别人的代码中学习经验,而没有全面理解规范。而且许多人认为,CSS规范是复杂的并且常常自相矛盾,是为浏览器厂商而不是为网页开发人员编写的。
此外,还有浏览器问题。浏览器的bug和不一致性是现代CSS开发人员面对的最大问题之一。不幸的是,许多bug都没有良好的文档记录,它们的修复方法基本上只是在开发人员之间口口相传。你必须知道以某种方式做某件事,否则在某种浏览器中就会出问题。但是,你记不住是哪种浏览器以及为什么会出问题。
所以,就需要有一本书将最有用的CSS技术汇总在一起,并且集中介绍现实的浏览器问题,从而弥补人们CSS知识中的欠缺。本书会帮助你加快学习CSS的过程,使你的代码很快达到CSS专家的水平。
读者对象
本书适合具有(X)HTML和CSS基本知识的任何人:。无论你是刚刚接触CSS设计,还是已经开发纯CSS站点好几年了,本书中都有适合你的内容。如果你已经使用CSS一段时间了,但还不是专家,那么你能够从本书获得最大的收益。本书充满了实用的现实建议和示例,可以帮助你精通现代CSS设计。..
本书结构
本书的前两章讨论基本的CSS概念和最佳实践,帮助你轻松地入门。你将学习如何建立代码结构和加注释、CSS定位模型的细节以及浮动和清理的工作原理。你可能已经掌握了其中的许多内容,但是可能会发现自己有遗漏或理解不充分的地方。因此,前两章是不错的CSS入门材料,也可以帮助你回顾已经知道的知识。
介绍了基本知识之后,后面五章讨论核心CSS技术,比如图像、链接、列表操纵、表单设计、数据表格设计以及纯CSS布局。每一章都由浅入深,直到建立比较复杂的示例。在这些章节中,你将学习如何创建圆角框、带透明阴影的图像、标签页式导航条和flickr风格的翻转。如果你想研究本书中的示例,可以从WWW.turingbook.com或WWW.friendsofed.com下载所有示例代码。
浏览器bug是许多CSS开发人员最头疼的问题,所以本书中的所有示例都关注创建跨浏览器的技术。不只如此,本书还用两章讨论招数(hack)、过滤器、bug和bug修复。在这两章中,你将学习一些最常用的过滤器,什么时候应该使用它们以及什么时候应该避免使用它们。还要学习bug捕捉技术,以及如何在bug造成问题之前发现并修复它们。甚至还会学习是什么造成了Microsoft IE中许多看似无规律的CSSbug。
最后两章是真正的“大餐”。Simon Collison和Cameron Moll是两位最杰出的CSS设计人员,他们将本书讨论的许多技术组合成两个实例研究。所以你不但将学习这些技术的工作原理,而且要学习如何将它们用在实际项目中。
本书可以从头到尾地阅读,也可以放在计算机旁边作为提示、技巧和技术的参考资料。这由你决定。...
序言回到顶部↑
在网页设计的精彩世界里,实现同一个目标有无数的方法,而且新的方法还在不断地出现。对于特定的问题没有惟一正确的解决方法,丰富的选择使我们这些网页设计人员受益良多,同时也困扰着我们。这些选择虽然能使网页设计变得有趣,但同时也带来了很大的麻烦。本书将帮助你减少麻烦,理清头绪。.
Andy Budd多年来一直在编写、设计和宣讲基于标准的网页设计,我们现在有幸在本书中看到他以简洁清晰的方式讲授最重要的CSS技术。本书提供了一套网页设计人员不可或缺的解决方案、技巧和经验。
有些图书中仅仅提出一种实现某一目标的正确方法,我很不喜欢这样的做法,Andy所做的正好相反,他为各种任务(如对链接应用样式、创建标签页式导航和创建多列布局等)提供了多种方法。掌握了常见设计元素的这些时髦漂亮的设计方法,你就可以更好地做出选择。..
不只如此,Andy还邀请两位出色的设计人员将这些技术组合在一起,通过两个实例研究向我们展示了这些基本技术如何组合在一起。我长期以来一直是Cameron和Simon的崇拜者,看到这两位分别讨论流体布局、无懈可击的布局和灵活的样式解决方案的实例研究,真的是受益匪浅。
好了,现在开始深入研究各种设计方法,祝你早日成为精通CSS的高手。...
Dan Cederholm
于马萨诸塞州Salem市
(Dan是Web Standar ds Solutions一书的作者)
Andy Budd多年来一直在编写、设计和宣讲基于标准的网页设计,我们现在有幸在本书中看到他以简洁清晰的方式讲授最重要的CSS技术。本书提供了一套网页设计人员不可或缺的解决方案、技巧和经验。
有些图书中仅仅提出一种实现某一目标的正确方法,我很不喜欢这样的做法,Andy所做的正好相反,他为各种任务(如对链接应用样式、创建标签页式导航和创建多列布局等)提供了多种方法。掌握了常见设计元素的这些时髦漂亮的设计方法,你就可以更好地做出选择。..
不只如此,Andy还邀请两位出色的设计人员将这些技术组合在一起,通过两个实例研究向我们展示了这些基本技术如何组合在一起。我长期以来一直是Cameron和Simon的崇拜者,看到这两位分别讨论流体布局、无懈可击的布局和灵活的样式解决方案的实例研究,真的是受益匪浅。
好了,现在开始深入研究各种设计方法,祝你早日成为精通CSS的高手。...
Dan Cederholm
于马萨诸塞州Salem市
(Dan是Web Standar ds Solutions一书的作者)
媒体评论回到顶部↑
“Andy Budd对CSS设计的底层技术和当代方法有着深刻的理解,而且他更善于将这些知识娓娓道来。在跨浏览器支持问题上,无人可以望其项背。”
——Molly E.Holzschlag,Web标准项目负责人,W3C HTML工作组专家
“Andy Budd多年来一直在编写、设计和宣传基于标准的网页设计,我们现在有幸在本书中看到他以简洁清晰的方式讲授最重要的CSS技术。本书提供了一套网页设计人员不可或缺的解决方案、技巧和经验。”
——Dan Cederholm,Web Standards Solutions的作者
——Molly E.Holzschlag,Web标准项目负责人,W3C HTML工作组专家
“Andy Budd多年来一直在编写、设计和宣传基于标准的网页设计,我们现在有幸在本书中看到他以简洁清晰的方式讲授最重要的CSS技术。本书提供了一套网页设计人员不可或缺的解决方案、技巧和经验。”
——Dan Cederholm,Web Standards Solutions的作者
评论交流
共有107人开贴评论 191人参与评论 90人参与打分 查看
评价等级:





发表于:2009-5-11 16:17:00
总体来说,内容是不错的,小巧但是实用。不过翻译水平不够,很多句子读起来完全是西化的句子。而且技术图书翻译有些名词是翻译不到位比不翻译更糟糕。这本书里就是。任何一个编写CSS的开发人员,不可能不知道CSS Hack,这本书里非要莫名其妙地弄出一个“招式”来。我一直很纳闷“招式”是什么东西,看了才知道原来是 CSS Hack 。
另外印刷也非常粗糙,像这样一本书,图示是非常重要的。但是这本书里的图片印刷质量非常低。比如用CSS实现图片阴影那部分,作为效果演示的图片,跟原始图片相比,阴影几乎非常难以看到。
这本书如果放在书店里,相信除了标题和目录能比较吸引读者,翻开浏览一遍的第一印象肯定是不想买。希望出版社以后能够改进。不要由于印刷上的问题,浪费了大好的内容。
另外印刷也非常粗糙,像这样一本书,图示是非常重要的。但是这本书里的图片印刷质量非常低。比如用CSS实现图片阴影那部分,作为效果演示的图片,跟原始图片相比,阴影几乎非常难以看到。
这本书如果放在书店里,相信除了标题和目录能比较吸引读者,翻开浏览一遍的第一印象肯定是不想买。希望出版社以后能够改进。不要由于印刷上的问题,浪费了大好的内容。
评价等级:





发表于:2006-11-10 21:40:00
------------------- 第六部分 -------------------
(接[问题2])
作者设置了垂直边框,以为万事大吉,殊不知IE中还是会出问题。〈fieldset /〉外面新套上的那层〈div /〉似乎把IE中的这个毛病解决了,为什么能,我不知道。最后,作为一种试探,我在没有应用前一解决方案的前提下,在样式表中为类“i3”添加一个样式属性“display: inline-block;”(按154页的说法,这使得元素z拥有了布局。注意,这个方法也有缺陷,详见下面在问题3中的分析)。结果,它一下子就解决了下边框断裂的问题和左下角纵向背景超出的问题。
[问题3]. 在应用前面的解决方案之前,先单独尝试分析一下gallery.html页面。实验表明:左栏向右错位的问题是由于在IE中未能正确对待“Black Convoy Gallery”部分的九张图片所占据的区域(一个类为“thumbnails”的〈div /〉)的宽度而导致的。似乎它的宽度最终把id值为“primaryContent”的那个〈div /〉(下称m)撑宽了,从而也把其父元素(id值为“wrapper”的那个〈div /〉)撑宽了。而左栏在文档中实际位置在右栏之后,只不过通过将margin-left设置为“-750px”而在呈现在左边罢了。右栏的宽度增加使得计算左栏的位置的基准线右移,最终产生的效果就是左栏有一个向右的位移。现在应用前面的解决方案。测试意外地发现,标题为“Black Convoy Gallery”的那个带圆角的区域,在上下滚动页面时会发生有时断裂、有时又能合拢的问题解决了(为什么能?我不知道)。在此基础上,将样式表中“thumbnails”类的margin-right值从40px减到30px,即可解决左栏错位的问题。至此,IE中的问题完全解决了。在Firefox中效果也完全正常。但是在Opera中却有点不对头:那些较宽的圆角区的右边部分会出现空槽。分析原因,应该是Opera中处理display为inline-block的元素的方式导致的。为了解决这个问题,只好使用一下hack手段:首先,删除前面在类“i3”的样式声明中添加的“display: inline-block;”,然后,在样式表中添加声明“* html .i3 { height: 1%; }”。这个解决方案在三种浏览器中都能成功解决问题。
总结上面关于案例1的分析,对于表单错位的问题的解决方案是完善的。而对左下角纵向背景超出问题、左边栏右错位问题、滚动时区域发生断裂的问题的解决则不太体面,因为虽然问题被解决了,但为什么能解决仍然说不清楚,感觉自己象是一个补锅匠。各位朋友如果能想出更好的办法,给出更合理、准确的解释,请不吝赐教。
小小一个例子,竟然出现这么多问题!三个作者中负责这个例子的Simon Collison着实令人失望。不仅如此,他讲述这个例子的方式也不敢恭维,给人的感觉就是表达能力不佳。本书封底对他的介绍中说道:“杰出的网页设计师……他撰写的一本CSS基础教程最近刚刚出版”。是的,他也许是一个杰出的网页设计师,但他写的书,我可不想看。
(未完待续)
(接[问题2])
作者设置了垂直边框,以为万事大吉,殊不知IE中还是会出问题。〈fieldset /〉外面新套上的那层〈div /〉似乎把IE中的这个毛病解决了,为什么能,我不知道。最后,作为一种试探,我在没有应用前一解决方案的前提下,在样式表中为类“i3”添加一个样式属性“display: inline-block;”(按154页的说法,这使得元素z拥有了布局。注意,这个方法也有缺陷,详见下面在问题3中的分析)。结果,它一下子就解决了下边框断裂的问题和左下角纵向背景超出的问题。
[问题3]. 在应用前面的解决方案之前,先单独尝试分析一下gallery.html页面。实验表明:左栏向右错位的问题是由于在IE中未能正确对待“Black Convoy Gallery”部分的九张图片所占据的区域(一个类为“thumbnails”的〈div /〉)的宽度而导致的。似乎它的宽度最终把id值为“primaryContent”的那个〈div /〉(下称m)撑宽了,从而也把其父元素(id值为“wrapper”的那个〈div /〉)撑宽了。而左栏在文档中实际位置在右栏之后,只不过通过将margin-left设置为“-750px”而在呈现在左边罢了。右栏的宽度增加使得计算左栏的位置的基准线右移,最终产生的效果就是左栏有一个向右的位移。现在应用前面的解决方案。测试意外地发现,标题为“Black Convoy Gallery”的那个带圆角的区域,在上下滚动页面时会发生有时断裂、有时又能合拢的问题解决了(为什么能?我不知道)。在此基础上,将样式表中“thumbnails”类的margin-right值从40px减到30px,即可解决左栏错位的问题。至此,IE中的问题完全解决了。在Firefox中效果也完全正常。但是在Opera中却有点不对头:那些较宽的圆角区的右边部分会出现空槽。分析原因,应该是Opera中处理display为inline-block的元素的方式导致的。为了解决这个问题,只好使用一下hack手段:首先,删除前面在类“i3”的样式声明中添加的“display: inline-block;”,然后,在样式表中添加声明“* html .i3 { height: 1%; }”。这个解决方案在三种浏览器中都能成功解决问题。
总结上面关于案例1的分析,对于表单错位的问题的解决方案是完善的。而对左下角纵向背景超出问题、左边栏右错位问题、滚动时区域发生断裂的问题的解决则不太体面,因为虽然问题被解决了,但为什么能解决仍然说不清楚,感觉自己象是一个补锅匠。各位朋友如果能想出更好的办法,给出更合理、准确的解释,请不吝赐教。
小小一个例子,竟然出现这么多问题!三个作者中负责这个例子的Simon Collison着实令人失望。不仅如此,他讲述这个例子的方式也不敢恭维,给人的感觉就是表达能力不佳。本书封底对他的介绍中说道:“杰出的网页设计师……他撰写的一本CSS基础教程最近刚刚出版”。是的,他也许是一个杰出的网页设计师,但他写的书,我可不想看。
(未完待续)
评价等级:





发表于:2006-11-10 21:33:00
------------------- 第四部分 -------------------
有了上述认识,修改后两个例子也很容易。其中第二个示例因为IE6不支持〈a /〉元素之处的所有元素上的伪元素“:hover”,所以在IE6中无法所有的效果(除非用点JavaScript),但是我们还是可以如前所述那样解决链接的激活区域问题。第三个示例(90页至93页)具体修改方案为:删去〈img /〉元素,为〈div /〉元素添加样式属性“background: url(images/group-photo.jpg) left top no-repeat;”,并把样式属性“height: 425px;”改为“padding-top: 425px;”,然后删去“#pic a .link”、“#pic .rich a .link”、“#pic .andy a .link”和“#pic .jeremy a .link”这四条样式规则。
四. 实例研究1简直就是一个反面典型。明显的有:
[问题1]. 在IE中显示时,带圆角框的区域左下角总有一个奇怪的白色赘生物。
[问题2]. contact.html页面中的那个表单,其下方的按钮在三种浏览器中看起来都不象按钮,倒象是一个文本框。而整个表单在三种浏览器中的显示结果各不相同。Opera中的看起来最好,Firefox中的表单未与上方的标题文字“The sexy contact form”左对齐。而IE中的效果最惨:输入框和它们的标题犬牙交错,非常难看,而且,下边的自定义边框与主体部分竟然几乎完全断开。
[问题3]. gallery.html页面在IE中显示时,两列布局中的左边那一列向右边错位约20像素,标题为“Black Convoy Gallery”的那个带圆角的区域,在上下滚动页面时会发生有时断裂、有时又能合拢的现象。
这三个问题分别分析如下:
[问题1]. 要明白其原因,首先需要了解自定义边框的生成机制。针对每一个类为“cbb”的〈div /〉(下称a),cb.js中的javascript函数生成了三个〈div /〉,className分别为“i1”(下称x)、“i2”(下称y)和“i3”(下称z),令x包含y、y包含z,并将a中原有的所有内容移进z中,然后令x成为a的一个子元素,将a的className改为“cb”,最后,在x之前插入一个新生成的〈div /〉(下称b),在x之后插入另一个新生成的〈div /〉(下称c)。b提供了左上角、上边框和右上角,c提供了左下角、下边框和右下角。而x的背景图像形成左边框,y的背景图像形成右边框。使用DOM查看器可以看出,左下角出现一个赘生物的直接原因是在IE中,x的高度错误地变得高于y和z(它们三个的高度本来应该是相等的,正如在Firefox中看到的那样),左下角冒出来的怪物正是x的背景的下端。为什么IE中x会高于y和z,我不知道,它的毛病发作的时候简直不可理喻。我在解决下面的问题2的过程中意外地找到了解决这个问题的办法——虽然不知道为什么能解决这个问题。参见问题2解决方案说明的最后部分。
(未完待续)
有了上述认识,修改后两个例子也很容易。其中第二个示例因为IE6不支持〈a /〉元素之处的所有元素上的伪元素“:hover”,所以在IE6中无法所有的效果(除非用点JavaScript),但是我们还是可以如前所述那样解决链接的激活区域问题。第三个示例(90页至93页)具体修改方案为:删去〈img /〉元素,为〈div /〉元素添加样式属性“background: url(images/group-photo.jpg) left top no-repeat;”,并把样式属性“height: 425px;”改为“padding-top: 425px;”,然后删去“#pic a .link”、“#pic .rich a .link”、“#pic .andy a .link”和“#pic .jeremy a .link”这四条样式规则。
四. 实例研究1简直就是一个反面典型。明显的有:
[问题1]. 在IE中显示时,带圆角框的区域左下角总有一个奇怪的白色赘生物。
[问题2]. contact.html页面中的那个表单,其下方的按钮在三种浏览器中看起来都不象按钮,倒象是一个文本框。而整个表单在三种浏览器中的显示结果各不相同。Opera中的看起来最好,Firefox中的表单未与上方的标题文字“The sexy contact form”左对齐。而IE中的效果最惨:输入框和它们的标题犬牙交错,非常难看,而且,下边的自定义边框与主体部分竟然几乎完全断开。
[问题3]. gallery.html页面在IE中显示时,两列布局中的左边那一列向右边错位约20像素,标题为“Black Convoy Gallery”的那个带圆角的区域,在上下滚动页面时会发生有时断裂、有时又能合拢的现象。
这三个问题分别分析如下:
[问题1]. 要明白其原因,首先需要了解自定义边框的生成机制。针对每一个类为“cbb”的〈div /〉(下称a),cb.js中的javascript函数生成了三个〈div /〉,className分别为“i1”(下称x)、“i2”(下称y)和“i3”(下称z),令x包含y、y包含z,并将a中原有的所有内容移进z中,然后令x成为a的一个子元素,将a的className改为“cb”,最后,在x之前插入一个新生成的〈div /〉(下称b),在x之后插入另一个新生成的〈div /〉(下称c)。b提供了左上角、上边框和右上角,c提供了左下角、下边框和右下角。而x的背景图像形成左边框,y的背景图像形成右边框。使用DOM查看器可以看出,左下角出现一个赘生物的直接原因是在IE中,x的高度错误地变得高于y和z(它们三个的高度本来应该是相等的,正如在Firefox中看到的那样),左下角冒出来的怪物正是x的背景的下端。为什么IE中x会高于y和z,我不知道,它的毛病发作的时候简直不可理喻。我在解决下面的问题2的过程中意外地找到了解决这个问题的办法——虽然不知道为什么能解决这个问题。参见问题2解决方案说明的最后部分。
(未完待续)
评价等级:





发表于:2006-11-10 21:32:00
------------------- 第三部分 -------------------
三. 第五章最后三个例子(82页至93页)在IE6中不能正常工作。
其实它们的问题都是类似的,分析其中的第一个例子就行了。在83页到85页的这个图像映射示例,在IE中的异常表现是:当且仅当鼠标正好移至链接区域的边框上时,链接才能被激活。实验表明,在IE中,这种链接在被定位到图片上面的时候,必须设置非透明的背景色,否则就会出现这种问题(在其它情况下,并不需要这种设置)。对于这个例子来说,为链接区域设置背景色当然是不能接受的。进一步的实例表明:作为背景的图片不会对前方的链接产生不良影响。因此,这个示例的跨平台解决方案是:将外层的〈div /〉元素设置背景图像设置的〈img /〉元素的src属性所指的图像,然后删除〈img /〉元素。当然,为了实现跨平台也得付出代价:首先,这个示例中,从实际意义来说,图像本来应该是文档内容的一部分,但将其改为背景后,它不再属于文档内容,变成了呈现样式的组成部分。其次,虽然在IE和Firefox中,可以通过右击背景图像后选择相应的菜单项来获取图像,但在别的某些浏览器(如Opera)中却没有提供这种直接获取背景图像的功能,所以这个解决方案可能给需要下载这个图片的用户造成困难。在进行前述改动之前,先再分析一下这个示例的第二个问题,因为如果按前面的说明修改了之后,第二个问题就不容易看出来了。现在在〈div /〉元素之后加上一句话“Hello CSS”,在IE中查看,会发现这一行字与图片之前有一个较大的间距。在IE DOM查看器中可以看到,这个间距是被〈ul /〉元素占据的。块元素没有设置样式属性overflow或将其设置为visible值的时候,如果其指定的大小不足以容纳其内容时,标准的行为应该是不改变块元素的大小,但让内容溢出。但在IE中,拥有布局的块元素的大小将被自动扩展以适应内容。在本例中,由于〈ul /〉元素的存在,〈div /〉的高度实际上大于图片的高度,所以后续内容与图片底边就有了一个较大的间距。就本例而言,如果按前面的说明去掉〈img /〉元素,第一个问题解决了,而且由于〈ul /〉块将上移,其顶边与〈div /〉的顶边对齐,看起来第二个问题也解决了。且慢,试着用鼠标去激活几个链接,会发现对于第一个人,鼠标如果指向其鼻子以上的部分就不能激活链接。使用DOM查看器,发现这似乎是由于第一个〈li /〉中的〈a /〉被后面两个〈li /〉盖住了,依CSS标准来看,这当然是荒唐的行为,但IE就是这么干的。对于本例,完整的解决方案应该是:去掉〈img /〉元素,为〈div /〉元素添加“background: url(images/group-photo.jpg) left top no-repeat;”、“padding-top: 425px;”和“overflow: hidden;”这三条样式属性,并把〈div /〉的样式属性height的值改为0px。另一个方案是:去掉〈img /〉元素,去掉〈ul /〉和〈li /〉元素,让〈div /〉元素只包含赤裸裸的三个〈a /〉元素,并把原来〈li /〉元素中的class属性添加到相应的〈a /〉元素中,为〈div /〉元素添加样式属性“background: url(images/group-photo.jpg) left top no-repeat;”,去掉“#pic ul”那个规则,把“#pic .rich a”、“#pic .andy a”和“#pic .jeremy a”分别改为“#pic a.rich”、“#pic a.andy”和“#pic a.jeremy”。后一种方案看起来更简洁。如果不需要列表提供的语义的话,我更喜欢后者。
(未完待续)
三. 第五章最后三个例子(82页至93页)在IE6中不能正常工作。
其实它们的问题都是类似的,分析其中的第一个例子就行了。在83页到85页的这个图像映射示例,在IE中的异常表现是:当且仅当鼠标正好移至链接区域的边框上时,链接才能被激活。实验表明,在IE中,这种链接在被定位到图片上面的时候,必须设置非透明的背景色,否则就会出现这种问题(在其它情况下,并不需要这种设置)。对于这个例子来说,为链接区域设置背景色当然是不能接受的。进一步的实例表明:作为背景的图片不会对前方的链接产生不良影响。因此,这个示例的跨平台解决方案是:将外层的〈div /〉元素设置背景图像设置的〈img /〉元素的src属性所指的图像,然后删除〈img /〉元素。当然,为了实现跨平台也得付出代价:首先,这个示例中,从实际意义来说,图像本来应该是文档内容的一部分,但将其改为背景后,它不再属于文档内容,变成了呈现样式的组成部分。其次,虽然在IE和Firefox中,可以通过右击背景图像后选择相应的菜单项来获取图像,但在别的某些浏览器(如Opera)中却没有提供这种直接获取背景图像的功能,所以这个解决方案可能给需要下载这个图片的用户造成困难。在进行前述改动之前,先再分析一下这个示例的第二个问题,因为如果按前面的说明修改了之后,第二个问题就不容易看出来了。现在在〈div /〉元素之后加上一句话“Hello CSS”,在IE中查看,会发现这一行字与图片之前有一个较大的间距。在IE DOM查看器中可以看到,这个间距是被〈ul /〉元素占据的。块元素没有设置样式属性overflow或将其设置为visible值的时候,如果其指定的大小不足以容纳其内容时,标准的行为应该是不改变块元素的大小,但让内容溢出。但在IE中,拥有布局的块元素的大小将被自动扩展以适应内容。在本例中,由于〈ul /〉元素的存在,〈div /〉的高度实际上大于图片的高度,所以后续内容与图片底边就有了一个较大的间距。就本例而言,如果按前面的说明去掉〈img /〉元素,第一个问题解决了,而且由于〈ul /〉块将上移,其顶边与〈div /〉的顶边对齐,看起来第二个问题也解决了。且慢,试着用鼠标去激活几个链接,会发现对于第一个人,鼠标如果指向其鼻子以上的部分就不能激活链接。使用DOM查看器,发现这似乎是由于第一个〈li /〉中的〈a /〉被后面两个〈li /〉盖住了,依CSS标准来看,这当然是荒唐的行为,但IE就是这么干的。对于本例,完整的解决方案应该是:去掉〈img /〉元素,为〈div /〉元素添加“background: url(images/group-photo.jpg) left top no-repeat;”、“padding-top: 425px;”和“overflow: hidden;”这三条样式属性,并把〈div /〉的样式属性height的值改为0px。另一个方案是:去掉〈img /〉元素,去掉〈ul /〉和〈li /〉元素,让〈div /〉元素只包含赤裸裸的三个〈a /〉元素,并把原来〈li /〉元素中的class属性添加到相应的〈a /〉元素中,为〈div /〉元素添加样式属性“background: url(images/group-photo.jpg) left top no-repeat;”,去掉“#pic ul”那个规则,把“#pic .rich a”、“#pic .andy a”和“#pic .jeremy a”分别改为“#pic a.rich”、“#pic a.andy”和“#pic a.jeremy”。后一种方案看起来更简洁。如果不需要列表提供的语义的话,我更喜欢后者。
(未完待续)
| 我要写评论 |
| 查看所有评论交流(共107条) |


点击看大图






加载中...
