第
3
章
CSS 基础
CSS(CascadingStyleSheets,层叠样式表)是一种用来定义HTML 或者
XML等结构化文档样式的计算机语言,它不仅可以静态地修饰网页,也能与各种
脚本语言协同工作,实现对网页元素的动态设置。基于CSS技术,可以将页面的
内容与表现形式分离。若要进行全局样式更新,只需简单地修改样式,即可实现
网站中对应元素样式的自动更新。
.. 3.1 CSS简介
3.1.1 基本语法
样式表由一系列CSS规则组成,规则主要由选择器和声明(一条或者多条)构
成。样式表示例如下。
selector{declaration l ; declaration 2; … ; declaration N}
选择器通常是需要改变样式的HTML元素,每条声明由一个属性和一个属
性值组成。属性是希望设置的样式属性,每个属性有一个值,属性和值之间用冒
号分隔,如下所示。
selector{property:value}
【示例3-1】 声明示例。
声明示例代码如图3-1所示,其作用是将
元素内的文字颜色定义为蓝
色,同时将字体大小设置为12像素,注意:
图3-1 声明示例
(1)值可以有不同写法和单位。
52 Web前端开发基础———HTML+CSS+JavaScript+前端框架
(2)如果值为若干单词,则需要将值放入引号内。
(3)如果不止一个声明,则需要使用分号将每个声明分隔。
(4)是否包含空格不会影响CSS在浏览器的工作效果。
(5)CSS一般对大小写不敏感。
(6)选择器可以进行分组,用逗号将需要分组的选择器分开。
【示例3-2】 用CSS定义段落颜色为蓝色。
p{color: blue;}
p{color: #0000ff;}
p{color: #00f;}
p{color: rgb(0,0,255);}
p{color: rgb(0%,0%,100%);}
被分组的选择器可共享相同的声明。示例3-3中对所有的标题元素进行了分组,设置
所有的标题元素颜色为绿色。
【示例3-3】 用CSS设置标题颜色为绿色。
h1,h2,h3,h4,h5,h6{
color: green;
}
3.1.2 引入方式
当读到一个样式表时,浏览器会根据它来格式化HTML文档。CSS样式按其所在位
置可以分为行内样式、内部样式和外部样式三类。
1.行内样式
将CSS样式直接书写在HTML标签内部,称为行内样式或者内联样式,是CSS样式的
一种基本形式,如示例3-4所示。
【示例3-4】 行内样式。
行内样式
行内样式需要书写在标签的style属性中,样式属性和值之间用冒号分隔,多个样式之
间用分号分隔。
行内样式存在不足:如果一个页面中有大量标签,其中还包含很多重复标签,仍需要给
每个标签都编写行内样式,这是一件非常麻烦的事情。此外,将HTML标签与CSS样式混
杂、耦合在一起,也不利于代码的调试和修改,所以行内样式仅作为CSS样式的一种基本形
式,并不提倡在实际项目中使用。
2.内部样式
内部样式将CSS样式添加在与标签之间,并用
标签进行声明。内部样式将CSS样式与HTML标签分离,使页面更加整洁。
第3章 CSS基础 53
【示例3-5】 内部样式。
内部样式
内部样式
内部样式优于行内样式,可以实现CSS样式与HTML标签的分离。但是,内部样式只
对当前页面有效,如果多个页面中有很多相同的样式,CSS代码冗余度较大,因此内部样式
也并不提倡使用。
3.外部样式
外部样式是存储在一个单独的外部CSS文件中的CSS规则。利用网页文件头部中的
标签,该文件被链接到Web站点中的一个或多个页面上。
使用外部样式表,可通过改变一个CSS文件来改变整个站点的外观。外部样式表可以
在任何文本编辑器中被编辑,但是不能包含任何HTML标签,以“.css”扩展名进行保存。
当样式需要应用于很多页面时,外部样式表将是最理想的选择。
【示例3-6】 外部样式。
外部样式
外部样式
在这段代码中,使用元素引入外部样式,rel属性用于设置链接的关系,这里设
54 Web前端开发基础———HTML+CSS+JavaScript+前端框架
置为样式表,href属性用于设置外部样式的文件路径。
.. 3.2 CSS选择器
CSS选择器是一种模式,用于选择需要设置样式的HTML元素。使用CSS选择器可
以对HTML页面中的标签实现一对一、一对多或者多对一的控制。
CSS选择器有标签选择器、ID选择器、类选择器、复合选择器、伪元素选择器以及伪类
选择器等。
3.2.1 标签选择器
标签选择器用于控制标签的样式,是指用HTML标签名称作为选择器,然后按标签名
称为页面中某一类标签指定统一的CSS样式,创建或更改标签的CSS规则后,所有标签名
对应的元素的样式都会立即更新,语法格式如下所示。
标签名{属性1:属性值1; 属性2:属性值2; …; 属性n:属性值n;}
标签选择器的优点是能快速地为页面中同类型的标签统一样式;但同时,这也是它的缺
点:不够灵活,不能提供差异化样式。
3.2.2 ID 选择器
ID选择器通过HTML元素的ID属性对它进行唯一性标识,ID 选择器定义时名称前
加“#”,且名称必须是字母或下画线开头,不能是数字,其语法格式如下所示。
#ID 名{属性1:属性值1; 属性2:属性值2; …; 属性n:属性值n;}
【示例3-7】 CSS中ID选择器的应用。
#red {color: red;}
#green {color: green;}
在上述HTML代码中,ID为red的元素内容显示为红色,而ID为green的
元
素内容显示为绿色。
【示例3-8】 HTML中ID选择器的应用。
这个段落是红色。
这个段落是绿色。
在Web页面中,多个HTML标签可以设置相同ID,浏览器可正常解析,但是,当页面中
JavaScript根据document.getElementById("ID")定位标签时,无法准确定位,如示例3-9所示。
【示例3-9】 页面中JavaScript定位元素的示例。
第3章 CSS基础 55
页面中JavaScript 定位元素的示例
第一个ID 选择器
第二个ID 选择器
运行代码后,浏览器控制台只输出第一个ID为red的元素内容,并不能输出所有ID为
red的元素内容。
3.2.3 类选择器
类选择器是用户自定义名称的选择器,使样式作用于被class属性限定的HTML 元
素。类选择器在网页中可以应用任意多次,定义时名称前加“.”,且名称必须是字母和下画
线开头,不能是数字,其语法格式如下所示。
.类名{属性1:属性值1; 属性2:属性值2; …; 属性n:属性值n;}
类选择器可以为元素对象定义单独或相同的样式,使用时需要设置HTML 元素的
class属性,并指定属性值为类选择器的名称,具体使用方法如下所示。
这是类选择器
类选择器的使用不局限于某个元素,而是适用于所有具有class属性的元素。例如,以
上为元素设置的类选择器同样可以作用于
元素,使用方法如下所示。
这里也可以使用类选择器
【示例3-10】 类选择器的使用方法。
56 Web前端开发基础———HTML+CSS+JavaScript+前端框架
类选择器的使用方法
红色字段
蓝色字段
H3 蓝色字段
运行这段代码后,效果如图3-2所示。
图3-2 类选择器的使用方法
类选择器可为任何具有class属性的元素设置样式。当页面中包含多个相同元素,且大
部分元素使用相同样式,个别元素使用不同样式时,可以先使用标签选择器为所有元素设置
相同样式,再使用类选择器为个别元素设置不同样式。
【示例3-11】 类选择器设置不同样式。
类选择器设置不同样式
默认段落样式
默认段落样式
特殊段落样式
默认段落样式
默认段落样式
运行代码,效果如图3-3所示。
图3-3 类选择器设置不同样式
3.2.4 复合选择器
复合选择器由两个或多个基本选择器,通过不同的方式组合而成,可选择更准确、更精
细的目标元素,包括上下文关系选择器、交集选择器和并集选择器。
1.上下文关系选择器
上下文关系选择器简称关系选择器,也称为派生选择器,常见的关系选择器有后代选择
器、子代选择器和相邻兄弟选择器。
(1)后代选择器。
后代选择器可选择元素的后代元素,语法格式如下所示。
选择器1 选择器2{属性1:属性值1; 属性2:属性值2; …; 属性n:属性值n;}
外层标签写在前面,内层标签写在后面,中间用空格分隔。当标签发生嵌套时,内层标
签就成为外层标签的后代。
【示例3-12】 后代选择器。
58 Web前端开发基础———HTML+CSS+JavaScript+前端框架
后代选择器
嵌套标记的颜色
没有嵌套标记的颜色
运行代码,效果如图3-4所示。
图3-4 后代选择器
(2)子代选择器。
子代选择器,也称父子选择器,是特殊的后代选择器,用来选择某元素的直接后代,语法
格式如下所示。
选择器1>选择器2{属性1:属性值1; 属性2:属性值2; …; 属性n:属性值n;}
父子选择器之间用大于号“>”分隔,子代选择器一般放在后代选择器之后,否则,后代
选择器的效果会被子代选择器覆盖,如示例3-13所示。
【示例3-13】 子代选择器。
子代选择器
运行代码,效果如图3-5所示。
图3-5 子代选择器
下述代码中,因为所有都是的后代,因此,所有列表项都为蓝色。
ul>li{
color:blue;
}
(3)相邻兄弟选择器。
相邻兄弟选择器可选择紧接在另一元素后的元素,且二者有相同父元素,语法格式如下所示。
选择器1+选择器2{属性1:属性值1; 属性2:属性值2; …; 属性n:属性值n;}
选择器使用相邻兄弟结合符“+”分隔,例如,“h1 + p{color:red;}”表示选择紧接在
标签后出现的段落,设置其字体颜色为红色。其中,和
标签拥有共同的
父标签
。
2.交集选择器
交集选择器由两个选择器构成,其中第一个为标签选择器,第二个为类选择器或ID选
择器,两个选择器之间不能有空格,语法格式如下所示。
选择器1 选择器2{属性1:属性值1; 属性2:属性值2; …; 属性n:属性值n;}
60 Web前端开发基础———HTML+CSS+JavaScript+前端框架
【示例3-14】 交集选择器。
交集选择器
红底白字
绿底黑字
蓝底白字
运行代码,效果如图3-6所示。
图3-6 交集选择器
第3章 CSS基础 61
3.并集选择器
并集选择器可同时选中多个基本选择器所选元素范围。任何形式的选择器都可以组成
“并集”,多个选择器之间通过逗号“,”连接,使用并集选择器与单独使用各个基本选择器的
效果一样,语法格式如下所示。
选择器1,选择器2{属性1:属性值1; 属性2:属性值2; …; 属性n:属性值n;}
【示例3-15】 并集选择器。
并集选择器
第一行数据
第二行数据
第三行数据
运行代码,效果如图3-7所示。
图3-7 并集选择器
3.2.5 伪元素选择器
伪元素(Pseudo-element)是HTML中并不存在的元素,CSS伪元素用于设置元素指定
部分的样式,包括首字母、首行等,例如,“::first-letter”伪元素用于向某个选择器中的第一
个字母添加特殊样式。
在CSS3中,伪元素由两个冒号“::”开头,后接伪元素的名称,放在选择器之后,用于选
择指定的元素。考虑到兼容性,CSS2中的伪元素使用一个冒号“:”。
62 Web前端开发基础———HTML+CSS+JavaScript+前端框架
伪元素的语法如下所示。
selector:: pseudo-element{property:value;}
CSS类也可以与伪元素配合使用,语法如下所示。
selector.class::pseudo-element{property:value;}
如果要对文本首行设置特殊样式,可使用如下代码。
p::first-line{
color:#ff0000;
}
在伪元素中,“::before”用于在元素之前添加内容,“::after”用于在元素之后添加内
容,“::first-line”用于在文本的首行设置特殊样式,且“::first-line”和“::first-letter”只能用
于块级元素。
3.2.6 伪类选择器
伪类不特指某一个元素,而是指一个元素的特殊状态,用于向选择器添加特殊的效果。
例如,被单击的元素、鼠标移入的元素等。同一个元素,根据不同的状态,有着不同的样式,
其语法如下所示。
selector:pseudo-class{property:value;}
CSS类也可以与伪类搭配使用,语法如下所示。
selector.class:pseudo-class{ property:value;}
例如,超链接单击之前样式设定为“a:link{color:#ff0000;}”,详情见3.3.5节。
.. 3.3 CSS样式
CSS样式可设置HTML页面中的文本、图片内容以及版面布局和外观显示,用以美化
网页,常用的CSS样式包括字体样式、文本样式、图片样式、背景样式、超链接样式等。
3.3.1 字体样式
字体样式可设置文字的字体族、大小、粗细、是否倾斜、英文字母大小写、字符间距、阴影
效果等,字体样式属性和属性值如表3-1所示。
表3-1 字体样式属性和属性值
属 性属 性 值
font-family 常用字体包括:楷体、宋体、微软雅黑、Arial、Helvetica、sans-serif等
续表
第3章 CSS基础 63
属 性属 性 值
font-size
medium,默认值
length,某个固定值,常用单位为px、em 和pt
百分数(%),相对值,基于父元素或默认值的一个百分比值
inherit,继承父元素的字体大小
font-weight normal默认值,bold粗字体,bolder更粗字体,lighter更细字体,number(范围为100~
900),inherit继承父级字体粗细
font-style normal默认值,itatic斜体,inherit继承父级字体风格
text-transform none默认值,capitalize单词以大写字母开头,uppercase全部大写,lowercase全部小写,
inherit继承父元素
letter-spacing normal默认,字符间没有额外空间,length定义字符间的固定空间(允许使用负值),
inherit继承父元素
text-shadow text-shadow:h-shadow、v-shadow、blur、color。其中,水平阴影位置h-shadow必需,允许为负
值;垂直阴影位置v-shadow必需,允许为负值;模糊距离blur可选;阴影颜色color可选
【示例3-16】 字体样式。
字体样式
明月几时有
把酒问青天
运行代码,效果如图3-8所示。
图3-8 字体样式代码效果
注意:将元素粗细设置为400相当于normal,设置为700相当于bold。对于中文网页
来说,一般多用bold和normal,不建议使用数值。
64 Web前端开发基础———HTML+CSS+JavaScript+前端框架
【示例3-17】 设置元素粗细。
设置元素粗细
皑如山上雪
皎若云间月
闻君有两意
故来相决绝
今日斗酒会
明旦沟水头
躞蹀御沟上
沟水东西流
凄凄复凄凄
运行代码,效果如图3-9所示。
图3-9 设置元素粗细代码效果
第3章 CSS基础 65
3.3.2 文本样式
文本样式有很多种,常见样式包括文本颜色、行高、文本装饰、水平对齐方式等。
1.文本颜色
文本颜色color用于定义文本的颜色,取值方式有以下三种。
(1)预定义的颜色值名称,如red、green、blue等。
(2)十六进制色彩码,如#FF0000、#FF6600、#29D794等。
(3)RGB三基色代码,如红色可以表示为rgb(255,0,0)或rgb(100%,0%,0%)。
实际开发中,常用十六进制颜色定义方式。如果使用RGB代码的百分比颜色值,取值
为0时,也不能省略百分号,必须写为0%。
【示例3-18】 文本样式。
文本样式
人生若只如初见
何事秋风悲画扇
等闲变却故人心
运行代码,效果如图3-10所示。
图3-10 文本样式代码效果
66 Web前端开发基础———HTML+CSS+JavaScript+前端框架
2.行高
CSS样式属性line-height用于设置行间的距离,一般称为行高。行高属性值常用单位
有3种,分别为像素px、相对值em 以及百分比%,实际开发中,多用像素px,如图3-11
所示。
图3-11 行高属性值示意
3.文本装饰
CSS样式属性text-decoration用于设置文本的下画线、上画线、删除线等装饰效果,可
用属性值包括以下4种。
(1)none表示没有修饰(默认值)。
(2)underline表示下画线。
(3)overline表示上画线。
(4)linethrough表示删除线。
注意:text-decoration后可赋多个值,用于给文本添加多种显示效果。例如,希望文字
同时有下画线和删除线效果,可以将underline和linethrough同时赋给text-decoration,也
可利用text-decoration的属性值none去掉超链接的下画线。
【示例3-19】 去掉超链接的下画线。
去掉超链接的下画线
第3章 CSS基础 67
万丈穹庐人醉
星影摇摇欲坠
归梦隔狼河
又被河声搅碎
运行代码,效果如图3-12所示。
图3-12 去掉超链接的下画线的代码效果
4.水平对齐方式
水平对齐方式text-align属性用于设置文本内容的水平对齐,可用属性值包括:默认值
left左对齐、right右对齐和center居中对齐。
【示例3-20】 水平对齐方式text-align。
水平对齐方式text-align
飞絮飞花何处是
层冰积雪摧残
疏疏一树五更寒
68 Web前端开发基础———HTML+CSS+JavaScript+前端框架
运行代码,效果如图3-13所示。
图3-13 水平对齐方式text-align代码效果
3.3.3 图片样式
1.控制图片的大小
在CSS中,利用属性宽度width和高度height设置图片的大小,height和width属性
不包括内边距、边框和外边距,它设置的是元素内容的高度和宽度,如图3-14所示。图片大
小属性如表3-2所示。
图3-14 元素内容宽度和高度
表3-2 图片大小属性
属 性值描 述
width
auto 默认,浏览器计算实际宽度
length 以px、em 等定义宽度
% 以包含块(父元素)的百分比定义宽度
inherit 从父元素继承的width属性值
height auto 默认,浏览器计算高度
length 以px、em 等定义高度
续表
第3章CSS基础69
属性值描述
height % 以包含块(父元素)的百分比定义高度
inherit 从父元素继承的height属性值
不管图片实际大小是多少,都可使用width和height来定义。
2.图片边框
在CSS 中,使用border属性定义图片的边框,border属性允许指定元素边框的样式、宽
度和颜色(表3-3) 。
表3-3border属性
属性描述
border-width 指定四个边框的宽度,用于上边框、右边框、下边框和左边框
border-style 指定要显示的边框类型
border-color 设置四个边框的颜色,或者使用border简洁写法,如border:1pxsolidgray;
3.
图片水平对齐
text-align一般用在两个地方:文本水平对齐和图片水平对齐,即text-align只对文本
和
标签有效,对其他标签无效,gn属性值如表34所示。
text-ali
表3-
4
text-align属性值
属性值描述
left 默认值,左对齐
center 居中对齐
right 右对齐
注意:图片是在父元素中进行水平对齐,因此,若要对图片进行水平对齐,需要在父元
素中设置text-align属性。
4.
图片垂直对齐
vertical-align属性设置元素的垂直对齐方式,顶线、中线、基线以及底线位置如图3-15
所示。vertical-align属性值如表3-5所示。
图3-15
顶线、中线、基线以及底线位置示意图
70 Web前端开发基础———HTML+CSS+JavaScript+前端框架
表3-5 vertical-align属性值
属 性 值描 述
top 顶部对齐,把元素的顶端与行中最高元素的顶端对齐
middle 中部对齐,把此元素放置在父元素的中部
baseline 基线对齐,默认值,元素放置在父元素的基线上
bottom 底部对齐,元素及其后代元素的底部与整行的底部对齐
3.3.4 背景样式
1.background-color设置背景颜色
h1{
background-color:red;
}
2.background-image设置背景图片
body{
background-image:url(图片路径);
}
url表示引入图片的路径。
3.background-repeat设置背景的重复方式
若图片大小不能很好适配浏览器窗口,可指定其重复方式。浏览器默认将图片重复铺
满全屏,设置背景图片重复方式格式如下所示。
body{
background-repeat:重复方式;
}
“no-repeat”表示不重复,“repeat”表示重复,“repeat-x”表示沿x 轴方向重复,“repeat-y”表
示沿y 轴方向重复。
3.3.5 超链接样式
在浏览器中,默认情况下,超链接字体为蓝色,带有下画线,鼠标单击时字体为红色,单
击后为紫色。在CSS中,可使用超链接伪类来定义超链接在鼠标单击不同时期的样式,如
表3-6所示。