
1.3 CSS技术
随着网页制作技术的不断发展,单调的 HTML属性样式已经无法满足网页设计的需求。开发者往往需要更多的字体选择、更方便的样式效果、更绚丽的图形动画。CSS 可以在不改变原有 HTML 结构的情况下,增加丰富的样式效果,极大地满足了开发者需求。本节将详细讲解CSS技术的相关知识。
1.3.1 初识CSS
使用HTML标签属性对网页进行修饰的方式存在很大的局限和不足,因为将所有的样式都写在标签中,这样既不利于代码阅读,又使将来的代码维护非常困难。如果希望页面美观、大方、维护方便,就需要使用CSS实现结构与表现的分离。结构与表现相分离是指在页面设计中,HTML标签只用于搭建网页的基础结构,不使用标签属性设置显示样式,所有的样式交由CSS来设置。
CSS(Cascading Style Sheets,层叠样式表)是一种用于(增强)控制网页样式并允许将样式信息与网页内容分离的标签性语言。在实际开发中,CSS主要用于设置HTML页面中的文本格式(字体、大小、对齐方式等)、图片的外形(宽高、边框样式、边距等)和版面的布局等外观显示样式。
CSS定义的规则具体如下:
选择器{属性1:属性值1; 属性2:属性值2; 属性3:属性值3;……}
在上述样式规则中,选择器用于指定CSS样式作用的HTML对象,大括号内的属性是对该对象设置的具体样式。其中,属性和属性值以键值对“属性:属性值”形式出现,例如字体大小、文本颜色等。属性和属性值之间用“:”(英文冒号)连接,多个键值对之间用“;”(英文分号)进行分隔。
下面通过CSS样式对<div>标签进行设置,具体示例如下:
div{ border:1px solid red; width:600px; height:400px;}
在上述代码中,div为选择器,表示CSS样式作用的HTML对象;border、width和height为CSS属性,分别表示边框、宽度和高度,其中border属性有3个值,分别表示该边框为1像素、实心边框线、红色。
在CSS中,通常使用像素(px)作为计量文本、边框等元素的标准量,px 是相对于显示器屏幕分辨率而言的,而百分比(%)是相对于父对象而言的。例如,一个元素呈现的宽度是400px,子元素设置为50%,那么子元素所呈现的宽度为200px。
在CSS中颜色的取值方式有以下3种。
● 预定义的颜色值,例如red、green、blue等。
● 十六进制形式的值,例如#FF0000、#FF6600、#29D794等。实际工作中,十六进制形式的值是常用的定义颜色的方式。
● RGB代码,例如红色可以用rgb(255,0,0)或rgb(100%,0%,0%)来表示。如果使用RGB代码百分比方式取颜色值,即使值为0,也不能省略百分号,必须写为0%。
1.3.2 CSS样式的引用方式
要想使用CSS修饰网页,就需要在HTML文档中引入CSS。CSS提供了4种引用方式,分别为行内式、内嵌式、外链式和导入式。下面分别对这4种引用方式进行介绍。
1. 行内式
行内式也被称为内联式,可通过标签的style属性设置标签的样式。行内式基本语法格式如下:
<标签名 style="属性1:属性值1;属性2:属性值2;属性3:属性值3;">内容</ 标签名>
在上述语法中,style是标签的属性,实际上任何HTML标签都拥有style属性,用于设置行内式。属性和属性值的书写规范与CSS样式规则一样。行内式CSS只对其所在的标签及嵌套在其中的子标签起作用。
通常CSS位于<head>头部标签中,但是行内式CSS位于<html>根标签中。例如,下面的示例代码即为行内式CSS样式的写法。
<h1 style="font-size:20px; color:blue; ">使用行内式CSS修饰一级标题的字体大小和颜色</h1>
在上述代码中,使用<h1>标签的style属性设置行内式CSS样式,用于修饰一级标题的字体和颜色。行内式CSS展示效果如图1-16所示。

图1-16 行内式CSS展示效果
需要注意的是,行内式 CSS 是通过标签的属性来控制样式的,这样并没有做到结构与样式分离,所以不推荐使用。
2. 内嵌式
内嵌式是将CSS代码集中写在HTML文档的<head>头部标签中,并用<style>标签定义,其基本语法格式如下:
<head> <style type="text/css"> 选择器 {属性1:属性值1; 属性2:属性值2; 属性3:属性值3;} </style> </head>
在上述语法中,<style>标签一般位于<head>标签中的<title>标签之后,因为浏览器是从上到下解析代码的,为便于 CSS 代码提前被加载和解析应把其放在头部,以避免网页内容加载后没有样式修饰的问题。在<style>标签中,只有设置type的属性值为“text/css”,浏览器才知道<style>标签包含的是CSS代码。下面通过一个案例学习如何在HTML文件中使用内嵌式CSS。
在chapter01文件夹中创建一个名称为cssDemo01的HTML文件,其关键代码如文件1-11所示。
文件1-11 cssDemo01.html
1 <head> 2 <title>使用内嵌式CSS</title> 3 <style type="text/css"> 4 /*定义标题标签居中对齐*/ 5 h2{ text-align:center;} 6 /*定义div标签样式*/ 7 div{ border:1px solid #CCC; width:300px; height:80px; color:purple; 8 text-align:center;} 9 </style> 10 </head> 11 <body> 12 <h2>内嵌式CSS样式</h2> 13 <div> 14 使用style标签可定义内嵌式CSS样式表,style标签一般位于head头部标签中, 15 title标签之后。 16 </div> 17 </body>
在文件1-11中,HTML文档的头部使用style标签定义内嵌式CSS样式,第5行代码使用了标题标签<h2>设置标题,第7行和第8行代码定义了<div>标签的样式。使用浏览器打开文件1-11,显示效果如图1-17所示。

图1-17 文件1-11的运行结果
内嵌式CSS只对其所在的HTML页面有效,因此仅设计一个页面时,使用内嵌式CSS 是个不错的选择。但在设计网站时,不建议使用这种方式,因为它不能充分发挥CSS代码的重用优势。
3. 外链式
外链式也叫链入式,是将所有的样式放在一个或多个以.css为扩展名的外部样式表文件中,通过<link>标签将外部样式表文件链接到HTML文件中。外链式CSS的基本语法格式如下:
<head> <link href="CSS文件的路径" type="text/css" rel="stylesheet" /> </head>
在上述语法中,<link>标签需要放在<head>头部标签中,并且必须指定<link>标签的3个属性,具体如下。
● href:定义所链接外部样式表文件的地址,可以是相对路径,也可以是绝对路径。
● type:定义所链接文档的类型,这里需要指定为“text/css”,表示链接的外部文件为CSS。
● rel:定义当前文档与被链接文档之间的关系,这里需要指定为“stylesheet”,表示被链接的文档是一个样式表文件。
下面通过修改文件1-11演示外链式CSS的引用方式,具体步骤如下。
(1)创建样式表
在chapter01文件夹中创建一个名称为style的CSS文件,使用记事本打开后,在文件中编写如下代码:
<style type="text/css"> /*定义标题标签居中对齐*/ h2{ text-align:center;} /*定义div标签样式*/ div{ border: 1px solid #CCC; width: 300px; height: 80px; color:purple; text-align:center;} </style>
(2)创建HTML文档
在chapter01文件夹中创建一个名称为cssDemo02的HTML文件,其关键代码如文件1-12所示。
文件1-12 cssDemo02.html
1 <head> 2 <title>使用外链式CSS</title> 3 <link href="style.css" type="text/css" rel="stylesheet" /> 4 </head> 5 <body> 6 <h2>外链式CSS样式</h2> 7 <div> 8 外链式也叫链入式,是将所有的样式放在一个或多个以.css为扩展名的外部样式 9 表文件中。 10 </div> 11 </body>
在上述代码中,第3行代码使用<link>标签链入了style.css文件,代替了内嵌式的<style>标签。使用浏览器打开文件cssDemo02.html,显示结果如图1-18所示。

图1-18 文件1-12的运行结果
从图1-18中可以看到,使用外链式与内嵌式引入CSS文件的显示效果是一样的。在实际开发中,外链式是使用频率最高、最实用的引入方式,它将HTML代码与CSS代码分离为两个或多个文件,实现了结构与表现的完全分离,同一个CSS文件可以被不同的HTML页面链接使用,同时一个HTML页面也可以通过多个<link>标签链接多个CSS样式表,极大提高了网页开发的工作效率。
4. 导入式
导入式与外链式相同,都是通过引入外部样式表文件来实现的。导入式CSS对HTML头部文档应用<style>标签,并在<style>标签内的开头处使用@import语句。导入式CSS的基本语法格式如下:
<style type="text/css" > @import url(CSS文件路径);或@import "CSS文件路径"; /*在此还可以存放其他CSS样式*/ </sty1e>
在上述语法格式中,<style> 标签内还可以存放其他的内嵌样式;@import 语句需要位于其他内嵌样式的上面。
如果想在文件1-12中使用导入式CSS,只需把HTML文档的<link >标签代码替换成下面代码即可。
<style type="text/css"> @import "style.css"; </style>
或者
<style type="text/css"> @import url(style.css); </style>
虽然导入式CSS与外链式CSS功能基本相同,但是大多数网站采用外链式CSS引入外部样式表,主要原因是两者的加载时间和顺序不同。当一个页面被加载时,<link>标签引用的CSS样式表将同时被加载,而@import引用的CSS样式表会等页面全部下载完才被加载。因此,当用户的网速较慢时,会先显示没有CSS修饰的网页,这样会造成不好的用户体验,所以大多数网站采用外链式CSS。
1.3.3 CSS选择器和常用属性
要想将CSS样式应用于特定的HTML元素,首先需要找到该目标元素。在CSS中,执行这一样式任务的部分被称为选择器。下面将对CSS选择器进行介绍。
1. 标签选择器
标签选择器是指用HTML标签名称作为选择器,按标签名称分类,为页面中某一类标签指定统一的样式。标签选择器的基本语法格式如下:
标签名{属性1:属性值1; 属性2:属性值2; 属性3:属性值3; }
在上述语法中,所有的HTML标签都可以作为标签选择器的标签名,例如<body>标签、<h1>标签、<p>标签等。用标签选择器定义的样式对页面中该类型的所有标签都有效,这是它的优点,但同时也是其缺点,因为这样不能设计差异化样式。
2. 类选择器
类选择器使用“.”(英文点号)进行标识,后面紧跟类名,其基本语法格式如下:
.类名{属性1:属性值1; 属性2:属性值2; 属性3:属性值3; }
在上述语法中,类名即为HTML页面中元素的class属性值,大多数HTML元素都可以定义class属性。类选择器最大的优势是可以为元素对象定义单独或相同的样式。
3. id选择器
id选择器使用“#”进行标识,后面紧跟id名,其基本语法格式如下:
#id名{属性1:属性值1; 属性2:属性值2; 属性3:属性值3; }
在上述语法中,id名即为HTML页面中元素的id属性值,大多数HTML元素都可以定义id属性。元素的id值是唯一的,只能对应文档中某一个具体的元素。
4. 通配符选择器
通配符选择器用“*”表示,它是所有选择器中作用范围最广的,能匹配页面中所有的元素。通配符选择器的基本语法格式如下:
*{属性1:属性值1; 属性2:属性值2; 属性3:属性值3; }
例如下面使用通配符选择器定义的样式能够清除所有HTML标签的默认边距。通配符选择器用法的示例代码如下:
* { margin: 0; /* 定义外边距*/ padding: 0; /* 定义内边距*/ }
在实际网页开发中,不建议使用通配符选择器,因为它设置的样式对所有的HTML标签都生效,这是其优点也是其缺点,因为这样不能设计差异化样式。
了解了几种选择器的语法结构后,下面通过一个案例学习这几种选择器的使用。在chapter01文件夹中创建一个名称为cssDemo03的HTML文件,其主要代码如文件1-13所示。
文件1-13 cssDemo03.html
1 <html> 2 <head> 3 <title>选择器</title> 4 <style type="text/css"> 5 /* 1.类选择器的定义*/ 6 .red { 7 color: red; 8 } 9 .green { 10 color: green; 11 } 12 .font18 { 13 font-size: 18px; 14 } 15 /* 2.id选择器的定义*/ 16 #bold { 17 font-weight: bold; 18 } 19 #font24 { 20 font-size: 24px; 21 } 22 </style> 23 </head> 24 <body> 25 <!--类选择器的使用--> 26 <h1 class="red">标题一:class="red",设置文字为红色。</h1> 27 <p class="green font18"> 28 段落一: class="green font18",设置文字为绿色,字号为18px。 29 </p> 30 <p class="red font18"> 31 段落二: class="red font18",设置文字为红色,字号为18px。 32 </p> 33 <!--id选择器的使用--> 34 <p id="bold">段落1:id="bold",设置粗体文字。</p> 35 <p id="font24">段落2:id="font24",设置字号为24px。</p> 36 <p id="font24">段落3:id="font24",设置字号为24px。</p> 37 <p id="bold font24">段落4:id="bold font24",同时设置粗体和字号24px。</p> 38 </body> 39 </html>
文件1-13中,第4~22行代码在<style>标签内分别定义了类选择器和id选择器。第6~14行代码使用了3个类选择器,第6~8行代码用“.red”选择器将页面中class属性值为red的文字颜色设置为红色,第9~11行代码用“.green”选择器将页面中class属性值为green的文字颜色设置为绿色,第12~14行代码用“.font18”选择器将页面中class属性值为font18的文本字号设置为18像素。第16~21行代码使用了2个id选择器,第16~18行代码使用“#bold”选择器将页面中id属性值为bold的文本字体变为粗体文字,第19~21行代码使用“#font24”选择器将页面中id属性值为font24的文本字号设置为24像素。
使用浏览器打开文件1-13,显示结果如图1-19所示。

图1-19 文件1-13的运行结果
在图1-19中,“标题一⋯⋯”和“段落二⋯⋯”的文本内容均显示为红色,这是因为第26行代码和第30行代码都调用了名为red的类选择器,由此可见同一个类选择器可以被多个标签引用。
图1-19中,“段落2⋯⋯”和“段落3⋯⋯”的字号均为24像素,这是由于它们引用了相同的id选择器,虽然浏览器并没有报错,但是这种做法是不被允许的,因为在JavaScript等脚本语言中id值是唯一的。
图1-19中,“段落4⋯⋯”没有显示任何CSS样式,这意味着同一个标签对象不能同时引用多个id选择器,例如id="bold font24"的引用方式是无效的,HTML标签不会显示任何样式。如果一个标签想要使用多个样式,可以使用类选择器。
除了选择器,CSS还提供了很多属性来丰富HTML标签的样式。CSS常用属性如表1-1所示。
表1-1 CSS常用属性
