CSS(Cascading Stylesheets,层叠样式表)是一种制作网页的新技术,现在已经为大多数的浏览器所支持,成为网页设计必不可少的工具之一。使用CSS能够简化网页的格式代码,加快下载显示的速度,也减少了需要上传的代码数量,大大减少了重复劳动的工作量。尤其是当你面对的是有数百个网页的站点时,CSS简直象是神对我们的恩赐!
前言
CSS(Cascading Stylesheets,层叠样式表)是一种制作网页的新技术,现在已经为大多数的浏览器所支持,成为网页设计必不可少的工具之一。
W3C(The World Wide Web Consortium)把动态HTML(Dynamic HTML)分为三个部分来实现:脚本语言(包括javascript、Vbscript等)、支持动态效果的浏览器(包括Internet Explorer、Netscape Navigator等)和CSS样式表。
一.层叠样式表的特点
且不说过去的网页缺少动感,就是在网页内容的排版布局上也有很多困难,如果不是专业人员或特别有耐心的人,很难让网页按自己的构思和创意来显示信息。即便是掌握了HTML语言精髓的人也要通过多次地测试,才能驾驭好这些信息的排版,过程十分漫长和痛苦。为了Internet的发展,让更多人早日踏足这个多姿多彩的世界,新的HTML辅助工具呼之欲出。
样式表就是在这种需求下诞生的,它首先要做的是为网页上的元素精确地定位,可以让网页设计者象导演一样,轻易地控制由文字、图片组成的演员们,在网页这个舞台上按剧本要求好好地表演。
其次,它把网页上的内容结构和格式控制相分离。浏览者想要看的是网页上的内容结构,而为了让浏览者更好地看到这些信息,就要通过格式控制来帮忙了。以前两者在网页上的分布是交错结合的,查看修改很不方便,而现在把两者分开就会大大方便网页的设计者。内容结构和格式控制相分离,使得网页可以光由内容构成,而将所有网页的格式控制指向某个CSS样式表文件。这样一来的好出表现在两个方面:
第一,简化了网页的格式代码,外部的样式表还会被浏览器保存在缓存里,加快了下载显示的速度,也减少了需要上传的代码数量(因为重复设置的格式将被只保存一次)。
第二,只要修改保存着网站格式的CSS样式表文件就可以改变整个站点的风格特色,在修改页面数量庞大的站点时,显得格外有用。避免了一个一个网页的修改,大大减少了重复劳动的工作量,当你面对的是有数百个网页的站点时,CSS简直象是神对我们的恩赐!^_^
二.添加层叠样式表的方法
我们为网页添加样式表的方法有四种。
1.最简单的方法是直接添加在HTML的标识符(tag)里:
< Tag style=”properties”>网页内容< /tag>
举个例子:
< p style=”color: blue; font-size: 10pt”>CSS实例< /p>
代码说明:
用蓝色显示字体大小为10pt的“CSS实例”。尽管使用简单、显示直观,但是这种方法不怎么常用,因为这样添加无法完全发挥样式表的优势“内容结构和格式控制分别保存”。
2.添加在HTML的头信息标识符< head>里:
以下是引用片段:
< head>
< style type=”text/css”>
< !--
样式表的具体内容
-->
< /style>
< /head>
type=”text/css”表示样式表采用MIME类型,帮助不支持CSS的浏览器过滤掉CSS代码,避免在浏览器面前直接以源代码的方式显示我们设置的样式表。但为了保证上述情况一定不要发生,还是有必要在样式表里加上注释标识符“< !--注释内容-->”。
3.链接样式表
同样是添加在HTML的头信息标识符< head>里:
以下是引用片段:
< head>
< link rel=”stylesheet” href=”*.css” type=”text/css” media=”screen”>
< /head>
*.css是单独保存的样式表文件,其中不能包含< style>标识符,并且只能以css为后缀。
Media是可选的属性,表示使用样式表的网页将用什么媒体输出。取值范围:
·Screen(默认):输出到电脑屏幕
·Print:输出到打印机
·TV:输出到电视机
·Projection:输出到投影仪
·Aural:输出到扬声器
·Braille:输出到凸字触觉感知设备
·Tty:输出到电传打字机
·All:输出到以上所有设备
如果要输出到多种媒体,可以用逗号分隔取值表。
Rel属性表示样式表将以何种方式与HTML文档结合。取值范围:
·Stylesheet:指定一个外部的样式表
·Alternate stylesheet:指定使用一个交互样式表
4.联合使用样式表
同样是添加在HTML的头信息标识符< head>里:
以下是引用片段:
< head>
< style type=”text/css”>
< !--
@import “*.css”
其他样式表的声明
-->
< /style>
< /head>
以@import开头的联合样式表输入方法和链接样式表的方法很相似,但联合样式表输入方式更有优势。因为联合法可以在链接外部样式表的同时,针对该网页的具体情况,做出别的网页不需要的样式规则。
需要注意的是:
·联合法输入样式表必须以@import开头。
·如果同时输入多个样式表有冲突的时候,将按照第一个输入的样式表对网页排版。
·如果输入的样式表和网页里的样式规则冲突时,使用外部的样式表。
三.层叠样式表的格式
一般来说,样式表的声明分为选择符(selector)和块{}(block),块里包含属性(properties)和属性的取值(value),基本格式如下:
选择符
其它格式1:
选择符1,选择符2,选择符3
有时候多个选择符将使用相同的设置,为了简化代码,我们可以一次性为它们设置样式,并在多个选择符之间加上“,”来分隔它们。
当有多个属性的时候,必须在两个属性之间用“;”来分隔。
其它格式2:
选择符1 选择符2
和格式1非常相似,只是在选择符之间少加了“,”,但作用却大不相同。表示如果选择符2包括的内容同时包括在选择符1里的时候,所设置的样式规则才起作用。
四.层叠样式表的分类
为了使网页的格式不过分的单调,必需让相同的选择符也能分类,并能按照不同的类别来进行不同的样式设计。基本格式如下:
选择符.类别名
类别名将可以在HTML的标识符里引用:
< 标识符 class=类别名>网页内容
五.层叠样式表的伪类
除了上述的分类方式外,为了使分类的使用更灵活多样,又产生了伪类的概念。类和伪类有什么样的区别呢?
一般地说,选择符可以和多个类采用捆绑的形式来设定,这样虽然能够为同一个选择符创建多种不同的样式,但捆绑的形式同时也限制了设定的类为其它的选择符所使用。伪类的产生就是为了解决这个问题,每个预声明的伪类都可以被所有的HTML标识符引用,当然有些块级内容的设置除外。基本格式如下:
.伪类名
伪类可以被任何标识符在HTML里引用。
<标识符 class=伪类名>网页内容
六.控制字体的样式
控制字体的样式包括控制字体类型、字体大小、字体风格、字体粗细四个部分。
1.字体类型
平时在使用WORD之类的字处理软件的时候,经常需要调整字体的显示,比如说“Arial”、“Impact”、“Verdana”等字体都是笔者使用的较多的。
基本格式如下:
font-family: 字体名称
如果在font-family后加上多种字体的名称,浏览器回按字体名称的顺序逐一在用户的计算机里寻找已经安装的字体,一旦遇到与要求的相匹配的字体,就按这种字体显示网页内容,并停止搜索;如果不匹配就继续搜索,直到找到为止,万一样式表里的所有字体都没有安装的话,浏览器就会用自己默认的字体来替代显示网页的内容。
注意:
·当指定多种字体时,用“,”分隔每种字体名称。
·当字体名称包含两个以上分开的单词时,用“”把该字体名称括起来。
·当样式规则外已经有“”时,用‘’代替“”。
2.字体大小
基本格式如下:
font-size: 字号参数
字号的取值范围:
·以Point为单位:点单位在所有的浏览器和操作平台上都适用
·以Em为单位:指字母要素的尺寸,和Point相同距离
·以Pixes为单位:像素可以使用于所有的操作平台,但可能会因为浏览者的屏幕分辨率不同,而造成显示上的效果差异
·以in(英寸)为单位
·以cm(厘米)为单位
·以mm(毫米)为单位
·以pc(打印机的字体大小)为单位
·以ex(x-height)为单位
·smaller:比当前文字的默认大小更小一号
·larger:比当前文字的默认大小更小大号
·使用比例关系
·xx-small
·x-small
·small
·medium
·large
·x-large
·xx-large
3.字体风格
字体风格只能控制各种斜体字的显示。
基本格式如下:
font-style: 斜体字的名称
4.字体粗细
字体粗细控制粗体字的显示,取值范围从数字100~900,浏览器默认的字体粗细为400。另外可以通过参数lighter和bolder使得字体在原有基础上显得更细或更粗些。
基本格式如下:
font-weight: 字体粗细
七.控制文字的样式
控制文字的样式包括文字大小写、文字修饰两个部分。
1.文字大小写
文字大小写使网页的设计者不用在输入文字时就完成文字的大小写,而可以在输入完毕后,再根据需要对局部的文字设置大小写。
基本格式如下:
text-transform: 参数
参数取值范围:
·uppercase:所有文字大写显示
·lowercase:所有文字小写显示
·capitalize:每个单词的头字母大写显示
·none:不继承母体的文字变形参数
注意:继承是指HTML的标识符对于包含自己的标识符的参数会继承下来。
2.文字修饰
文字修饰的主要用途是改变浏览器显示文字链接时的下划线。
基本格式如下:
text-decoration: 参数
参数取值范围:
·underline:为文字加下划线
·overline:为文字加上划线
·line-through:为文字加删除线
·blink:使文字闪烁
·none:不显示上述任何效果
八.控制文本的样式
控制文本的样式包括单词距离、字母距离、文本行距、文本水平对齐、文本垂直对齐文本缩进六个部分。
1.单词间距
单词间距指的是英文每个单词之间的距离,不包括中文文字。
基本格式如下:
word-spacing: 间隔距离
间隔距离的取值:points、em、pixes、in、cm、mm、pc、ex、normal等。
2.字母间距
字母间距是指英文字母之间的距离,功能、用法,以及参数的设置和单词间距很相似。
基本格式如下:
letter-spacing: 字母间距
3.行距
行距是指上下两行基准线之间的垂直距离。一般地说,英文五线格练习本,从上往下数的第三条横线就是计算机所认为的该行的基准线。
基本格式如下:
line-height: 行间距离
行间距离取值:
·不带单位的数字:以1为基数,相当于比例关系的100%
·带长度单位的数字:以具体的单位为准
·比例关系
注意:如果文字字体很大,而行距相对较小的话,可能会发生上下两行文字互相重叠的现象。
4.文本水平对齐
文本水平对齐可以控制文本的水平对齐,而且并不仅仅指文字内容,也包括设置图片、影像资料的对齐方式。
基本格式如下:
text-align: 参数
参数的取值:
·left:左对齐
·right:右对齐
·center:居中对齐
·justify:相对左右对齐
但需要注意的是,text-alight是块级属性,只能用于< p>、< blockquqte>、< ul>、< h1>~< h6>等标识符里。
5.文本垂直对齐
文本的垂直对齐应当是相对于文本母体的位置而言的,不是指文本在网页里垂直对齐。比如说,表格的单元格里有一段文本,那么对这段文本设置垂直居中就是针对单元格来衡量的,也就是说,文本将在单元格的正中显示,而不是整个网页的正中。
基本格式如下:
vertical-align: 参数
参数取值:
·top:顶对齐
·bottom:底对齐
·text-top:相对文本顶对齐
·text-bottom:相对文本底对齐
·baseline:基准线对齐
·middle:中心对齐
·sub:以下标的形式显示
·super:以上标的形式显示
6.文本缩进
文本缩进可以使文本在相对默认值较窄的区域里显示,主要用于中文板式的首行缩进,或是为大段的引用文本和备注做成缩进的格式。
基本格式如下:
text-indent: 缩进距离
缩进距离取值:
·带长度单位的数字
·比例关系
但是需要注意的是,在使用比例关系的时候,有人会认为浏览器默认的比例是相对段落的宽度而言的,其实事实并非如此,整个浏览器的窗口才是浏览器所默认的参照物。
另外,text-indent是块级属性,只能用于< p>、< blockquqte>、< ul>、< h1>~< h6>等标识符里。
九.控制颜色和背景的样式
控制颜色和背景的样式包括颜色属性、背景颜色、背景图片、背景图片重复、背景图片固定、背景定位六个部分。
1.颜色属性
基本格式如下:
color: 参数
颜色参数取值范围:
·以RGB值表示
·以16进制(hex)的色彩值表示
·以默认颜色的英文名称表示
以默认颜色的英文名称表示无疑是最为方便的,但由于预定义的颜色种类太少,所以更多的网页设计者喜欢用RGB的方式。RGB方式的好处很多,不但可以用数字的形式精确地表示颜色,而且也是很多图像制作软件(如Photoshop)里默认使用的规范,这样一来就为图片和网页更好地结合打下了坚实的基础。
2.背景颜色
在HTML当中,要为某个对象加上背景色只有一种办法,那就是先做一个表格,在表格中设置完背景色,再把对象放进单元格。这样做比较麻烦,不但代码较多,还要为表格的大小和定位伤些脑筋。现在用CSS就可以轻松地直接搞定了,而且对象的范围很广,可以是一段文字,也可以只是一个单词或一个字母。
基本格式如下:
background-color: 参数
参数取值和颜色属性一样。
3.背景图片
基本格式如下:
background-image: url(URL)
URL就是背景图片的存放路径。如果用“none”来代替背景图片的存放路径,将什么也不显示。
4.背景图片重复
背景图片重复控制的是背景图片平铺与否,也就是说,结合背景定位的控制可以在网页上的某处单独显示一幅背景图片。
基本格式如下:
background-repeat: 参数
参数取值范围:
·no-repeat:不重复平铺背景图片
·repeat-x:使图片只在水平方向上平铺
·repeat-y:使图片只在垂直方向上平铺
如果不指定背景图片重复属性,浏览器默认的是背景图片向水平、垂直两个方向上平铺。
5.背景图片固定
背景图片固定控制背景图片是否随网页的滚动而滚动。如果不设置背景图片固定属性,浏览器默认背景图片随网页的滚动而滚动。为了避免过于花哨的背景图片在滚动时伤害浏览者的视力,所以可以解除背景图片和文字内容的捆绑,该为和浏览器窗口捆绑。
基本格式如下:
background-attachment: 参数
参数取值范围:
·fixed:网页滚动时,背景图片相对于浏览器的窗口而言,固定不动
·scroll:网页滚动时,背景图片相对于浏览器的窗口而言,一起滚动
6.背景定位
背景定位用于控制背景图片在网页中显示的位置。
基本格式如下:
background-position: 参数表
参数取值范围:
·带长度单位的数字参数
·top:相对前景对象顶对齐
·bottom:相对前景对象底对齐
·left:相对前景对象左对齐
·right:相对前景对象右对齐
·center:相对前景对象中心对齐
·比例关系
参数中的center如果用于另外一个参数的前面,表示水平居中;如果用于另外一个参数的后面,表示垂直居中。
十.控制列表的样式
列表是HTML里一种很有用的显示方式,可以把相关的并列内容整齐地垂直排列,使网页显得整洁专业,并让浏览者有一目了然的感觉。
样式表为列表增加了一些功能,控制列表的样式包括列表样式、图形符号、列表位置三个部分。
1.列表符号
列表符号是指显示于每一个列表项目前的符号标识。
基本格式如下:
list-style-type:参数
参数取值范围:
·disc:圆形
·circle:空心圆
·square:方块
·decimal:十进制数字
·lower-roman:小写罗马数字
·upper-roman:大写罗马数字
·lower-alpha:小写希腊字母
·upper-alpha:大写希腊字母
·none:无符号显示
参数中的disc是默认选项。
2.图形符号
图形符号指原来列表的项目符号将可以使用图形来代替。
基本格式如下:
list-style-image:URL
URL是用来代替项目符号的图形文件的地址,可以使用相对地址或绝对地址。
3.列表位置
列表位置描述列表在何处显示。
基本格式如下:
list-style-position:参数
参数取值范围:
·inside:在BOX模型内部显示
·outside:在BOX模型外部显示
这里又出现了一个新的概念:BOX模型。BOX是指一种容器,包含了应用样式规则的对象,具体介绍将在后文中给出。
十一.控制用户界面的样式
在网页上,鼠标平时呈箭头形,指向链接时成为手形,等待网页下载时成为沙漏形……这似乎是约定俗成的。虽然这样的设计能使我们知道浏览器现在的状态或是可以做什么,但这些好像还不能完全地满足我们的需要。就拿链接来说,可以是指向一个帮助文件,也可以是向前进一页或是向后退一页,针对如此多的功能光靠千篇一律的手形鼠标是不能说明问题的。值得庆幸的是,CSS提供了多达13种的鼠标形状,供我们选择。
基本格式如下:
cursor:鼠标形状参数
CSS鼠标形状参数表:
鼠标形状:CSS代码
style="cursor:hand" 手形
style="cursor:crosshair" 十字形
style="cursor:text" 文本形
style="cursor:wait" 沙漏形
style="cursor:move" 十字箭头形:
style="cursor:help" 问号形
style="cursor:e-resize" 右箭头形
style="cursor:n-resize" 上箭头形
style="cursor:nw-resize" 左上箭头形
style="cursor:w-resize" 左箭头形
style="cursor:s-resize" 下箭头形
style="cursor:se-resize" 右下箭头形
style="cursor:sw-resize" 左下箭头形
十二.控制BOX的样式
样式表规定了一个容器BOX,它将要储存一个对象的所有可操作的样式。包括了对象本身、边框空白、对象边框、对象间隙四个方面。
为了大家更好地理解这些属性的意义,以及互相之间的关系,请看下面这个图示:
1.边框空白(MARGIN)
如图所示,位于BOX模型的最外层,包括四项属性。
格式分别如下:
·margin-top:顶部空白距离
·margin-right:右边空白距离
·margin-bottom:底部空白距离
·margin-left:左边空白距离
空白的距离可以用带长度单位的数字表示。
如果使用上述属性的简化方式margin,可以在其后连续加上四个带长度单位的数字,来分别表示margin-top、margin-right、margin-bottom、margin-left,每个数字中间要用空格分隔。
2.对象边框(BORDER)
如图所示,位于边框空白和对象空隙之间,包括了七项属性。
格式分别如下:
·border-top:顶边框宽度
·border-right:右边框宽度
·border-bottom:底边框宽度
·border-left:左边框宽度
·border-width:所有边框宽度
·border-color:边框颜色
·border-style:边框样式参数
其中border-width可以一次性设置所有的边框宽度,border-color同时设置四面边框的颜色时,可以连续写上四种颜色,并用空格分隔。上述连续设置的边框都是按border-top、border-right、border-bottom、border-left的顺序。
Border-style相对别的属性而言稍稍复杂些,因为它还包括了多个边框样式的参数:
·none:无边框。
·dotted:边框为点线。
·dashed:边框为长短线。
·solid:边框为实线。
·double:边框为双线。
·groove:根据color属性显示不同效果的3D边框
·ridge:根据color属性显示不同效果的3D边框
·inset:根据color属性显示不同效果的3D边框
·outset:根据color属性显示不同效果的3D边框
3.对象间隙(PADDING)
如图所示,位于对象边框和对象之间,包括了四项属性。
基本格式如下:
·padding-top:顶部间隙
·padding-right:右边间隙
·padding-bottom:底部间隙
·padding-left:左边间隙
和MARGIN类似,PADDING也可以用padding一次性设置所有的对象间隙,格式也和MARGIN相似,不再一一列举了。
十三.显示控制样式
基本格式如下:
display: 参数
参数取值范围:
·block(默认):在对象前后都换行
·inline:在对象前后都不换行
·list-item:在对象前后都换行,增加了项目符号
·none:无显示
十四.空白控制样式
基本格式如下:
空白属性决定如何处理元素内的空格。
white-space: 参数
参数取值范围:
normal:把多个空格替换为一个来显示
pre:忠实地按输入显示空格
nowrap:禁止换行
但要注意的是,write-space也是一个块级属性。