图解CSS3:核心技术与案例实战
大 漠 著
为什么要写这本书
CSS3是在CSS2.1基础上扩展而来,事实上,它还没有完全成熟。有些专家会告诉你,CSS3现在还用不上,甚至几年之后都不会有成熟的规范发布。
目前为止CSS3还没有一套成熟的规范,其中的模块也在不断更新,特别是浏览器对CSS3特性的支持也在不断变化,同时没有足够的时间去学习和研究W3C官方文档和规范,致使我们学习CSS3变得更为复杂。
为什么会选择这个时候编写这样一本图书呢?原因很简单。对于希望Web应用开发者而言,CSS3可以说是众望所归,这也是技术变更的硬性需求。在实际Web应用中新标准的采纳程度正在以令人目眩的速度不断地变更着,众多浏览器厂商也在不断加快对CSS3新特性的支持。在编写这本图书的过程中,我也被迫不断更新书中的浏览器支持表格。
面对自己正在使用的浏览器,大多数用户并不真正了解其具备的功能有多强大。当然,他们在浏览器自动更新后可能会发现一些细微的界面变化。但他们可能不知道,新版的浏览器对哪些CSS3特性有所支持。
本书的目标是帮助开发者更好地掌握CSS3的特性,并且将新技术运用到实际的开发当中,提高自己开发Web程序的水平。
本书面向的读者
有一定CSS3开发经验的前端工程师。
本书能帮助你系统掌握CSS3的各项知识,提升技术水平和业务能力。
从事CSS3开发的前端工程师。
由于CSS3涵盖的新特性非常多,在开发过程中将本书作为速查手册,提高开发效率。
前端开发爱好者。
如果还不是一名前端工程师,但是对前端开发非常感兴趣,本书也能让你对最新的CSS标准和规范有一个系统和全面的认识,为学习前端知识打下基础。
本书的特色
本书最大的特色就是将CSS3特性按模块功能分类,通过理论、图解、实战的方式向大家阐释CSS3每个特性功能。
内容全面、丰富、翔实。
由浅到深地讲解了CSS3新特性的语法、特性以及使用技巧。本书涵盖了CSS3众多功能模块,如CSS3选择器特性、边框模块、文本模块、颜色模块、UI界面模块、CSS3动画模块、CSS新型盒模型以及CSS媒体查询、响应式设计等。
图解方式,直观易懂。
图解的方式是本写的最大特色之一,在描述每一个CSS3特性过程都配了生动的实战效果,甚至每一步骤都配有相应的效果图。就算是你对文字理解或者代码理解有所误差,实战效果图能辅助你更好地理解CSS3每个特性。
案例丰富,实战性强。
每个CSS3特性都配有实战体验,部分案例来自于实际开发之中。同时在每个知识点之后,还提供了综合案例。通过实践加强动手能力,更好地掌握CSS3中的每个知识点。
动手实践才是掌握一门新技术最有效的途径。如果能在阅读本书的过程中逐一亲手实现这些案例,那么在以后的实际开发中自然就会具有相当强的动手能力了。
本书的内容
本书包括15章,通过实例来演示CSS3模块的新特性。
第1章简单介绍什么是CSS3,CSS3的好处是什么,浏览器对CSS3的支持状况,以及CSS3带来什么新特性,并且引入渐进增强式的概念。通过对本章的学习,大家可以在一定的程度上知道一些CSS3的故事。
第2章介绍CSS3选择器。选择器是CSS中的核心部分之一,本章先阐述CSS2的选择器,再引入CSS3新增的选择器。深入介绍了CSS3新增选择器的功能及其实用性,还有各浏览器的兼容性。
第3章详细介绍CSS3在边框方面新增的功能特性,比如边框色、图片边框、边框圆角等,并与CSS2进行了对比。
第4章介绍CSS3背景功能,着重阐述了多背景、背景尺寸、背景原点方面的使用,以让大家掌握如何使用CSS3背景功能的新特性。
第5章介绍CSS3文本功能。以前大家在网页制作时,只是设置文本的颜色、字体、字号等。通过对CSS3文本功能的学习,大家还可以运用文本阴影、文本溢出、文本换行等功能。
第6章介绍CSS3颜色特性。大家以前只有在设计软件中使用的颜色值现在都可以运用,如RGBA、HSL、HSLA、透明度等。
第7章介绍CSS3基础盒模型与用户界面。盒模型是CSS的重中之重,CSS2盒模型功能只能实现一些基本功能,对于一些特殊的功能需要借助JavaScript来实现。而在CSS3中这一点将得到很大的改善,可以通过CSS3来直接实现一些特殊的功能。
第8章介绍CSS3的弹性盒模型,给大家引入一种全新的布局概念,为大家的页面布局带来革命性的变化。
第9章介绍CSS3多列布局。布局在Web中随处可见,多列布局在CSS2中都是依靠float或者inline-block来实现的,而这两个属性带来的局限性也是相当大的。CSS3多列布局将会弥补这些不足之处。
第10章介绍CSS3渐变功能。渐变效果在Web中也是一种常见的效果,以前靠设计师制作图片来完成,不仅增加了设计师的工作量,在页面中的效果也带来过多的局限制,扩展性也相当差。CSS3渐变不再需要使用图片来代替这些特殊的效果。
第11章介绍CSS3变形功能。这是一个全新的功能,在CSS2中要实现需要借助JavaScript。CSS3的变形功能可以直接使用样式实现如旋转、移位、扭曲、缩放等效果。
第12章介绍CSS3过渡功能。大家在Web制作中,使过渡效果不再生硬,变得细腻、流畅。
第13章介绍CSS3动画功能。
第14章介绍Media Query与Responsive布局。随着移动设备和宽屏浏览器的普及,单一的设计不能满足Web页面的设计需求,此时CSS3的Media Query新特性中出现了一个新的布局概念——Responsive。本章中大家将体会到Media Query与Responsive布局的强大功能。
第15章介绍嵌入Web字体。浏览器仅限于用户在其系统上安装的字体呈现文本。CSS3使用@font-face改变了这一格局。网站不再受限于少量字体,如Arial、Verdana、Times和Georgia等。
如何阅读本书
本书结构不是按层进式安排的,章节之间是按CSS3的模块分类,读者阅读本书时无须按照先后顺序进行,可以挑选自己喜欢的章节阅读。但如果按章节的编排顺序逐章阅读,会更系统、更全面地学习CSS3,从中获得最大受益。
阅读本书的案例时,尽量不要照抄书中的代码,在理解案例的设计思路基础上,自己动手开发相似功能的应用,并创造出满足自己需求的功能,举一反三。
本书中使用的约定
本书案例已在主流浏览器上进行过测试了。分别是:Firefox 12.0、Google Chrome 19.0.1084.52、Safari 5.17、Opera 11.64、IE 9。
同时在一些广泛使用的旧版本浏览器(如IE 8)上也做了测试。很多情况下,CSS3的效果也能体现在较低版本上,页面能保持正常阅读,而且效果也不会太差。对于每一个CSS3特性,将尽可能地为低版本浏览器寻求变通的备用方案,使之能兼容那些不被原生支持的浏览器。
针对每个浏览器版本,我们会标注相对应的属性在哪个版本号中开始支持。一些CSS3特性需要添加相应浏览器的渲染引擎的前缀才会生效,我们将会在后面的章节中依次介绍各浏览器的渲染引擎的前缀名称,以及CSS3特性在对应浏览器下的写法。
在阅读本书时有些约定,有必要在这里先说明。
W3C表示万维网联盟(World Wide Web Consortium),是制定Web官方标准和规范(如CSS3)的组织。
初始值(即默认值)是用户不显式声明时元素所具有的属性值。需特别指明的是,属性是元素的本质,而不是用户自定义的属性。
IE 8及以下版本代表IE 8、IE 7和IE 6。
Webkit引擎内核的浏览器是指Safari(包括移动版本和桌面版本)、Google Chrome和其他近期使用版本的Webkit页面渲染引擎的浏览器,其私有属性的前缀是-webkit-。
Gecko引擎内核的浏览器是指Mozilla,常指的是Firefox浏览器,其私有属性的前端缀是-moz-。
Presto引擎内核的浏览器是指Opera,其私有属性的前缀是-o-。
KHTML引擎内核的浏览器是指Konqueror,其私有属性的前缀是-khtml-。
Trident引擎内核的浏览器是指Internet Explorer,其私有属性的前缀是-ms-。
在没有特别声明的情况下,本书所指的浏览器仅适用于Windows系统,不适用于Mac系统和移动端。
偶尔会碰到“所有浏览器”这个说法,此时仅代表目前所有广泛使用的浏览器,而并非字面意义所涵盖的那些可能仅占零星市场份额的不知名的浏览器。
“HTML”指HTML和XHTML这两种语言。
“CSS”指CSS2.1规范,除非特别声明。
本书所有案例代码都是以HTML 5的DTD编写。但这仅仅表示使用短小精悍的HTML 5文档声明<!DOCTYPE html>,还有更简洁的meta字符编码、style和script标签。没有使用任何HTML 5的新标签,比如section、header、nav和article,所以页面可以在IE 8及以下版本正常运行,可以在自己的页面里将其更换为喜欢的标签。所有示例也同样兼容HTML 4.01和XHTML 1.0。
为了方便阅读,本书中的部分案例代码仅提供了CSS样式代码和局部HTML代码,所有CSS实例代码必须置于一个外部样式文件或HTML文档的<head></head>标签内。
由于CSS3技术还在不断的完善与更新中,建议根据本书提供的参考地址,获取有关CSS3最新信息与更新。
勘误和支持
由于作者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为此,我特意创建了一个在线支持站点http://www.w3cplus.com/book-comment.html。大家可以将书中的错误发布在页面的评论中,遇到任何问题,可以留言或者发送邮件到w3cplus@hotmail.com,我将尽量提供最满意的答案。大家还可以关注微信公众账号ednote进入“第三极社区”微社区与广大读者和本书作者互动。书中的全部源文件可以从华章网站(http://www.hzbook.com)下载,我也会将相应的功能及时更正。期待能够得到你们真挚反馈。
致谢
首先要感谢好友林小志,是他让我鼓起勇气开始写这本书,也是他一直督促我的进度,并一直鼓励我坚持到最后。同时感谢W3CPlus(http://www.w3cplus.com)社区的所有同学们一直以来对我的默默支持。
感谢机械工业出版社的编辑杨福川给我这样一个机会,在一年多的时间中始终支持我的写作,你的鼓励和帮助引导我能顺利完成全部书稿。同时也要感谢白宇编辑辛苦的付出,帮助我修改书中不足。
感谢我的爸爸、妈妈将我培养成人,并时时刻刻为我灌输着信心和力量!也要感谢我的弟弟,引导我进入这个行业,让我有机会从事喜欢的工作。感谢太太罗群英和儿子一直以来对我的支持,让我有一个安心写作的环境,并给我足够的信心去完成这本拙作。
谨以此书献给我最亲爱的家人、朋友以及众多热爱W3CPlus社区的朋友们!
第1章 揭开CSS3的面纱 1
1.1 什么是CSS3 1
1.1.1 CSS3的新特性 2
1.1.2 CSS3的发展状况 4
1.1.3 现在能使用CSS3吗 5
1.1.4 使用CSS3有什么好处 5
1.2 浏览器对CSS3的支持状况 6
1.2.1 经典回顾:图说浏览器大战 7
1.2.2 浏览器的市场份额 8
1.2.3 主流浏览器对CSS3支持状况 9
1.3 渐进增强 11
1.3.1 渐进增强与优雅降级 11
1.3.2 渐进增强的优点 12
1.4 CSS3的现状及未来 13
1.4.1 谁在使用CSS3 13
1.4.2 CSS3的未来 14
1.5 本章小结 14
第2章 CSS3选择器 15
2.1 认识CSS选择器 15
2.1.1 CSS3选择器的优势 15
2.1.2 CSS3选择器分类 16
2.2 基本选择器 16
2.2.1 基本选择器语法 16
2.2.2 浏览器兼容性 17
2.2.3 实战体验:使用基本选择器 17
2.2.4 通配选择器 18
2.2.5 元素选择器 18
2.2.6 ID选择器 18
2.2.7 类选择器 19
2.2.8 群组选择器 20
2.3 层次选择器 21
2.3.1 层次选择器语法 21
2.3.2 浏览器兼容性 21
2.3.3 实战体验:使用层次选择器选择元素 21
2.3.4 后代选择器 23
2.3.5 子选择器 23
2.3.6 相邻兄弟选择器 24
2.3.7 通用兄弟选择器 25
2.4 动态伪类选择器 25
2.4.1 动态伪类选择器语法 26
2.4.2 浏览器兼容性 26
2.4.3 实战体验:美化按钮 27
2.5 目标伪类选择器 29
2.5.1 目标伪类选择器语法 29
2.5.2 浏览器兼容性 30
2.5.3 实战体验:制作手风琴效果 30
2.6 语言伪类选择器 33
2.6.1 语言伪类选择器语法 33
2.6.2 浏览器兼容性 34
2.6.3 实战体验:定制不同语言版本引文风格 34
2.7 UI元素状态伪类选择器 36
2.7.1 UI元素状态伪类选择器语法 36
2.7.2 浏览器兼容性 36
2.7.3 实战体验:Bootstrap的表单元素UI状态 37
2.8 结构伪类选择器 41
2.8.1 重温HTML的DOM树 41
2.8.2 结构伪类选择器语法 42
2.8.3 浏览器兼容性 43
2.8.4 结构伪类选择器中的n是什么 44
2.8.5 结构伪类选择器的使用方法详解 47
2.8.6 实战体验:CSS3美化表格 61
2.9 否定伪类选择器 66
2.9.1 否定伪类选择器语法 66
2.9.2 浏览器兼容性 67
2.9.3 实战体验:改变图片效果 67
2.10 伪元素 69
2.10.1 伪元素::first-letter 69
2.10.2 伪元素::first-line 70
2.10.3 伪元素::before和::after 70
2.10.4 伪元素::selection 72
2.11 属性选择器 73
2.11.1 属性选择器语法 73
2.11.2 浏览器兼容性 74
2.11.3 属性选择器的使用方法详解 75
2.11.4 实战体验:创建个性化链接样式 81
2.12 本章小结 84
第3章 CSS3边框 85
3.1 CSS3边框简介 85
3.1.1 边框的基本属性 85
3.1.2 边框的类型 86
3.1.3 谁在使用CSS3边框 88
3.2 CSS3边框颜色属性 88
3.2.1 border-color属性的语法及参数 88
3.2.2 浏览器兼容性 90
3.2.3 border-color属性的优势 90
3.2.4 实战体验:立体渐变边框效果 91
3.3 CSS3图片边框属性 91
3.3.1 border-image属性的语法及参数 92
3.3.2 border-image属性使用方法 92
3.3.3 浏览器兼容性 99
3.3.4 border-image属性的优势 100
3.3.5 实战体验:按钮圆角阴影效果 100
3.4 CSS3圆角边框属性 105
3.4.1 border-radius属性的语法及参数 105
3.4.2 border-radius属性使用方法 107
3.4.3 浏览器兼容性 114
3.4.4 border-radius属性的优势 115
3.4.5 实战体验:制作特殊图形 115
3.5 CSS3盒子阴影属性 118
3.5.1 box-shadow属性的语法及参数 118
3.5.2 box-shadow属性使用方法 119
3.5.3 浏览器兼容性 129
3.5.4 box-shadow属性的优势 130
3.5.5 实战体验:制作3D搜索表单 130
3.6 本章小结 133
相关资源:敏捷开发V1.0.pptx