CSS样式单可以控制HTML文档的显示。但在控制文档的显示之前,首先应在需要显示的HTML文档中导入CSS样式单。为了在HTML文档中使用CSS样式单,有如下3种使用样式单的方式。
使用CSS样式单的三种方式
➢ 链接外部样式文件:这种方式将样式文件彻底与HTML文档分离,样式文件需要额外引入。在这种方式下,一批样式可控制多份文档。
➢ 使用内部样式定义:这种方式是通过在HTML文档头定义样式单部分来实现的。在这种方式下,每批CSS样式只控制一份文档。
➢ 使用内联样式:这种方式将样式内联定义到具体的HTML元素,通常用于精确控制一个HTML元素的表现。在这种方式下,每份CSS样式只控制单个HTML元素。
引入外部样式文件
HTML文档中使用<link.../>
元素来引入外部样式文件,引入外部样式文件应在<head.../>
元素中增加如下<link.../>
子元素:
<link type="text/css" rel="stylesheet" href="CSS样式文件的URL"/>
在上面的语法格式中,type和rel表明该页面使用了CSS样式单,对于引入CSS样式单情形,这两个属性的值无须改变。href属性的值则指向CSS样式单文件的地址,此处的地址既可以是相对地址,也可以是互联网上的绝对地址。
例子
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title> 链接外部CSS样式单 </title>
<!-- 引入outer.css样式单文件 -->
<link href="outer.css" rel="stylesheet" type="text/css" />
</head>
<body>
<table>
<tr>
<td>疯狂Java讲义</td>
</tr>
<tr>
<td>轻量级Java EE企业开发实战</td>
</tr>
<tr>
<td>疯狂Ajax讲义</td>
</tr>
</table>
</body>
</html>
上面页面中仅仅包含了一个简单的表格,并指定了表格宽度,没有其他任何显示格式。为了让该页面更富表现力,可以为该页面指定外部的CSS样式单文件,引入外部CSS样式单文档的语法格式见上面介绍。outer.css样式单文件的代码如下。
/* 设置整个表格的背景色 */
table {
background-color: #003366;
width: 400px;
}
/* 设置单元格的背景色、字体等*/
td {
background-color: #fff;
font-family: "楷体_GB2312";
font-size: 20pt;
text-shadow: -8px 6px 2px #333;
}
正如在上面CSS样式单文件中见到的,CSS样式单总是由一个或多个样式定义组成,每个样式通常有如下语法格式:
Selector {property: value}
其中Selector是应用样式的选择器,Selector决定对哪些HTML元素起作用;而花括号里的属性名、属性值则指定字体、大小、背景、颜色等,也就是决定对HTML元素起怎样的作用。
使用内部CSS样式
一般来说,我们不建议使用内部CSS样式,因为这种做法需要在HTML文档内嵌入CSS样式定义,这种内部CSS样式主要有三大劣势。
➢ 如果此CSS样式需要被其他HTML文档使用,那么这些CSS样式必须在其他HTML文档中重复定义。
➢ 大量CSS嵌套在HTML文档中,必将导致HTML文档过大,大量的重复下载,导致网络负载加重。
➢ 如果需要修改整站风格时,必须依次打开每个页面重复修改,不利于软件工程化管理。
但内部样式定义也并非一无是处,如果想让某些CSS样式仅对某个页面有效,而不会影响整个站点,则应该选择使用内部CSS样式定义,对于上面的HTML页面,可以使用内部CSS样式单。
内部CSS样式需要放在<style.../>
元素中定义,每个CSS样式定义与外部CSS样式文件的内容完全相同。<style.../>
元素应该放在<head.../>
元素内,作为它的子元素。
使用内部CSS样式定义的语法格式如下:
<style type="text/css">
样式单文件定义
</style>
例子
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title> 内部样式单 </title>
<style type="text/css">
table {
background-color: #003366;
}
td {
background-color: #FFFFFF;
font-family: "楷体_GB2312";
font-size: 20pt;
text-shadow: -8px 6px 2px #333;
}
.title {
font-size: 18px;
color: #60C;
height: 30px;
width: 200px;
border-top: 3px solid #CCCCCC;
border-left: 3px solid #CCCCCC;
border-bottom: 3px solid #000000;
border-right: 3px solid #000000;
}
</style>
</head>
<body>
<div class="title">
疯狂Java体系图书:
</div><hr />
<table>
<tr>
<td>疯狂Java讲义</td><td>轻量级Java EE企业应用实战</td>
</tr>
<tr>
<td>疯狂Android讲义</td><td>经典Java EE企业应用实战</td>
</tr>
<tr>
<td>疯狂Ajax讲义</td><td>疯狂XML讲义</td>
</tr>
</table>
</body>
</html>
使用内联样式
内联CSS样式只对单个标签有效,它甚至不会影响整个文件。内联样式定义可以精确控制某个HTML元素的外观表现,并且允许通过JavaScript动态修改XHTML元素的CSS样式,从而改变该元素的外观。
为了使用内联样式,CSS扩展了HTML元素,几乎所有的HTML元素都增加了一个style通用属性,该属性值是一个或多个CSS样式定义,多个CSS样式定义之间以英文逗号隔开。简单地说,使用内联样式定义时,style属性值就是由一个或多个property:value组成的,此处的property:value与前面CSS样式单文件中的完全相同。
定义内联CSS样式的语法格式如下:
style="property1: value1; proterty2: value2..."
例子
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title> 内联CSS样式 </title>
</head>
<body>
<div style="font-size: 18px;
color: #60C;
height: 30px;
width: 200px;
border-top: 3px solid #CCCCCC;
border-left: 3px solid #CCCCCC;
border-bottom: 3px solid #000000;
border-right: 3px solid #000000;">
疯狂Java体系图书:
</div><hr />
<table style="background-color: #0099bb;">
<tr>
<td style="background-color: #FFFFFF;
font-family: '楷体_GB2312';
font-size: 20pt;
text-shadow: -8px 6px 2px #333;">疯狂Java讲义</td>
<td>经典Java EE企业应用实战</td>
</tr>
<tr>
<td style="background-color: #FFFFFF;
font-family: '楷体_GB2312';
font-size: 20pt;
text-shadow: -8px 6px 2px #333;">轻量级Java EE企业应用实战</td>
<td>疯狂XML讲义</td>
</tr>
<tr>
<td style="background-color: #FFFFFF;
font-family: '楷体_GB2312';
font-size: 20pt;
text-shadow: -8px 6px 2px #333;">疯狂Ajax讲义</td>
<td>疯狂Workflow讲义</td>
</tr>
</table>
</body>
</html>
注:本博客内容节选自李刚编著的疯狂HTML 5/CSS 3/JavaScript讲义 ,详细内容请参阅书籍。