第3章CSS层叠样式表 美轮美奂的网页,往往容易给人留下深刻印象,CSS就是网页的装饰师。本章主要介绍CSS基本格式、应用方式、选择器、常见样式设置方法等内容。熟练掌握CSS,是Web前端开发必备的技能。 3.1CSS简介 CSS全称为Cascading Style Sheets,层叠样式表,是万维网联盟W3C制定的一种标准。CSS描述了如何在页面上显示HTML的各种元素,可以方便地控制网页的样式和布局。 CSS3是CSS的升级版本,从多个方面进行了改进和扩充。本章所介绍的内容里面,已经包含了CSS3的部分内容。 3.2CSS基础 3.2.1CSS基本格式 CSS由选择器和声明两大部分组成,以下面的CSS为例: 页面代码: 观书有感
半亩方塘一鉴开
天光云影共徘徊
这种方式下,样式会影响页面上所有
标签,即两句诗所在层都具有同样的样式: 长度125px,边框为蓝色点线,线宽1px,但不具有这种样式。 2. “#自定义名”作为选择器 页面代码: 观书有感
半亩方塘一鉴开
天光云影共徘徊
这种方式下,样式会影响页面上所有id值与选择器名称相同的页面元素。所以,“半亩方塘一鉴开”的边框为红色实线、线宽1px,而“天光云影共徘徊”的边框为蓝色点线、线宽1px。 3. “.自定义名”作为选择器 页面代码:
观书有感
半亩方塘一鉴开
天光云影共徘徊
问渠那得清如许
为有源头活水来
说明: ① 图片与文字在垂直方向居中对齐。 图31奇偶行变色 ② 这种方式下,样式会影响页面上所有class值与选择器名称相同的页面元素。所以,四句诗的边框均为蓝色点线、线宽1px,而诗名“观书有感”为红色字、无边框。 ③ class="poem"的所有
中,奇数位置的
背景色为#e0e0f3。 ④ class="poem"的所有
中,偶数位置的
背景色为#e8f1fb。即③④样式设置了四句诗的奇偶行背景颜色的交替变化,如图31所示。 结合上面三种应用方式,再拓展介绍几种选择器用法:  div.poem: 选择class="poem"的所有
元素,例如div.poem{fontsize:12px;},下面几种与此类似。  div span: 选择
内部的元素。  img,span: 选择所有元素。  div[class^="poem"]: 选择class属性值以"poem"开头的
。  img[src$=".png"]: 选择src属性值以".png"结尾的。  img[src ~="on"]: 选择src属性值中包含"on"的。  img+span: 选择紧跟的首个。 3.3CSS样式设置 熟悉了CSS基本语法和应用方式后,就可以进一步学习CSS的各种样式设置。CSS样式设置非常丰富,下面选择一些常用样式设置进行介绍。 3.3.1文本 通过表31来学习一些常见的文本设置。 表31文本设置 名称说明举例(作用) color颜色color:#00f;(蓝色文字) fontfamily字体fontfamily:Wingdings; (文鼎字体) fontstyle字体样式fontstyle:italic; (斜体字) fontweight字体粗细fontweight:bold; (文字加粗) fontsize字体大小fontsize:1em; (字体大小为16像素) textalign水平对齐方式textalign:center; (水平方向居中) verticalalign垂直对齐方式verticalalign:middle; (垂直方向居中) textdecoration装饰线textdecoration:underline; (文字有下画线) texttransform文本转换texttransform: uppercase; (转换为大写) letterspacing字符间距letterspacing:-5px; (字符间距5像素) wordspacing单词间距wordspacing:5px; (单词间距5像素) lineheight行间距lineheight:1.5; (增大行间距) textshadow文字阴影textshadow:1px 1px 1px #ccc; (灰色阴影) 示例: 用红色加粗字体突出显示部分文字。

友情提示: 优惠活动截止到今天!

图32文本样式 这里仅设置“友情提示: ”为红色、粗体、阴影效果,如图32所示。 3.3.2背景 背景主要包括背景颜色、透明度、背景图片等。表32列出一些常见设置。 表32背景设置 名称说明举例(作用) backgroundcolor背景色backgroundcolor:#0f0; (绿色背景) opacity透明度opacity:0.5; (半透明) backgroundimage背景图像backgroundimage: url("image/bg.png"); (背景图像设置为 image文件夹下的bg.png) backgroundrepeat重复图像backgroundrepeat: repeatx; (水平方向拉伸图像) backgroundrepeat: repeaty; (垂直方向拉伸图像) backgroundrepeat: norepeat; (不拉伸图像) backgroundposition图像位置backgroundposition: right top; (右上角) backgroundattachment 背景图像固定方式backgroundattachment: fixed; (固定图像) backgroundattachment: scroll; (可滚动图像) backgroundsize图像大小backgroundsize:60px 35px; (图像大小60×35像素) 示例: 将上面的例子稍微修改一下,加入背景图片。 其他部分不变,只需要在
说明: ① 最外层
自动处于屏幕中央。 ② 设置背景图片为image/bg.png,请使用url()函数指明图片位置。 ③ 相同的样式放在一起定义,位置定义为相对于最外层
。 ④ 浮动在最外层
的左边。 ⑤ 浮动在最外层
的右边。 3.3.5伪类和伪元素 1. 伪类 伪类常用于定义页面元素的特殊状态,例如鼠标悬停时改变颜色。表35列出一些常用的伪类。 表35伪类 名称说明举例(作用) :active活动的a:active(活动链接) :checked被选中的input:checked(被选中的复选框) :disabled被禁用的button:disabled(被禁用的按钮) :enabled被启用的button:enabled(被启用的按钮) :focus获得焦点的input:focus(获得焦点的输入域) :hover鼠标悬停时div:hover(鼠标悬停在层上面) :link未访问链接a:link(未访问的链接) :readonly具有只读属性input:readonly(只读的输入域) 图35复选框样式 示例: 用伪类设置六个复选框的状态。当鼠标在复选框上面悬停时,变成红色实线圆角矩形; 当勾选复选框后,变成蓝色点线圆角矩形。具体效果如图35所示。 代码如下:
足球 游泳 绘画 舞蹈 阅读 拳击
说明: ① 鼠标悬停在复选框上时,改变文字状态。 ② 设置为圆角矩形边框。 ③ 复选框被选中后,改变文字状态。 2. 伪元素 伪元素用于设置页面元素指定部分的样式,例如设置一段文字的首行为红色字体,或者设置
层中临时动态添加的文字等。表36列出了伪元素。 表36伪元素 名称说明举例(作用) ::after指定元素之后span::after { content: url("image/m0.png"); } (在内部内容的末尾插入一张图片) ::before指定元素之前div::before { content: "欢迎光临!";}(在
内容前插入文字) ::firstletter首字母p::firstletter { color: #f00;} (段的首字母红色) ::firstline首行p::first line { color: #f00;} (段的首行红色) ::selection用户选择的内容p:: selection { color: #f00;} (用户选中的内容为红色) 图36聊天框 示例: 模拟微信的聊天框,如图36所示。 代码如下:
今天大家讨论得很热烈啊!
说明: ① 设置绿色背景聊天框的样式。 ② 定义一个伪元素——一个小方块,修饰
层。 ③ 伪元素的内容为空字符。 ④ 伪元素边框——左边框为绿色实线,其他边透明。 3.3.6多列 多列允许将文字拆分成几栏,类似于Word中的分栏效果。表37列出了常用的多列属性。 表37多列属性 名称说明举例(作用) columncount列数columncount:3; (定义为3栏) columnfill填充方式columnfill: balance|auto; (平衡或顺序自动填充) columngap列间隙columngap:10px; (列间隙为10像素) columnrule列规则columnrule: 1px solid #f00;(列之间1像素、红色实线) columnrulecolor列规则(颜色)columnrulecolor: #f00;(列颜色红色) columnrulestyle列规则(样式)columnrulestyle: solid;(列样式实线) columnrulewidth列规则(宽度)columnrulewidth: 1px;(列宽度1像素) columnspan跨越的列数columnspan:all;(跨越全部列) columnwidth列宽columnwidth:20px;(列宽20像素) 示例: 将一段出师表古文,用三栏形式展示,如图37所示。 图37文字分栏 代码如下:

出 师 表——诸葛亮(三国)

臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。
3.3.7动画 通过从一种样式变为另一种样式,CSS也可实现一些基本动画。我们知道,动画是通过一些关键帧的连续播放来呈现的。CSS提供了一个重要的属性@keyframes,通过它以及其他属性的组合,就可以实现动画效果。表38列出了一些常用动画属性。 表38动画属性 名称说明举例(作用) @keyframes动画帧@keyframes mymove { from {backgroundcolor: #f00;} to {backgroundcolor: #00f;} } (颜色从红色变化为蓝色,也可以使用百分比) animationdelay延迟时间animationdelay:2s(延迟2s开始) animationdirection播放方向animationdirection: normal|alternate;(正常播放或反向播放) animationduration持续时长animationduration:2s;(持续2s) animationiterationcount播放次数animationiterationcount:infinite;(重复播放) animationname动画名称animationname:mymove;(动画名称mymove) animationtimingfunction速度曲线animationtimingfunction:linear;(恒定速度。还可取值为: easein低速开始、easeout低速结束、easeinout低速开始和结束) 示例: 图片的路径动画。一张图片,放置在层
里面。动画轨迹: ①→②→③→④→①。在运动过程中,层
旋转前进,且背景颜色发生变换,如图38所示。图39为动画过程中的某一帧画面。 图38动画轨迹 图39旋转动画帧 代码如下:
视频讲解 3.4场景应用示例——功能导航条 3.4.1应用需求 图310功能导航条 京东购物网在购物页面的右边放置了一个功能导航条。综合前面所学知识,模拟制作一个水平放置的功能导航条,如图310所示。 具体要求: (1) 当鼠标悬停在图标按钮上面时,颜色变为红色; (2) “消息”图标按钮,右上角用红色小圆圈显示有6条新消息。这里只是模拟显示,我们将在第13章,真正实现消息推送; (3) 单击图标按钮时,弹出显示文字的对话框,例如“查询……”。当然,这个弹出对话框功能只是示例性质,暂时没有任何实际意义,但体现了基本的处理思路,以后可以慢慢完善按钮单击功能的实际处理。 3.4.2实现思路 首先定义一个层
,容纳整个工具栏图标按钮。其次,图标按钮使用
上述代码只是在每个部分的第1句加了注释,希望读者认真对照以前所学知识,逐句研读,完全理解每句代码的含义! 3.5场景任务挑战——导航菜单 图311导航菜单 制作学院导航菜单,如图311所示。“学院导航”背景为浅绿色,鼠标移动到其上时,弹出菜单项。当在菜单项中滑动鼠标时,当前菜单(例如“人工智能学院”)的背景色变为灰色。