HTML5+CSS3网页设计
上QQ阅读APP看书,第一时间看更新

2.3 CSS应用技巧

2.3.1 如何插入样式表

要想在浏览器中显示出预期的CSS样式表效果,就要让浏览器能够识别并正确调用CSS。当浏览器读取样式表时,要依照文本格式来读,在页面中插入CSS样式表的方法有以下3种:链入外部样式表、内部样式表和内嵌样式。

1.内部样式表

内部样式表是把样式表放到页面的<head>区里,这些定义的样式就应用到页面中了,样式表是用<style>标记插入的,从下例可以看出<style>标记的用法。

【例2-5】制作使用了CSS中的内部样式表。

978-7-111-59436-9-Chapter02-10.jpg

注意:有些低版本的浏览器不能识别style标记,这意味着低版本的浏览器会忽略style标记里的内容,并把style标记里的内容以文本直接显示到页面上。为了避免这样的情况发生,常用加HTML注释的方式(<!--注释-->)隐藏内容而不让它显示。

【例2-6】制作使用了注释的方式来隐藏内容。

978-7-111-59436-9-Chapter02-11.jpg

2.链入外部样式表

链入外部样式表是把样式表保存为一个样式表文件,然后在页面中用<link>标记链接到这个样式表文件,这个<link>标记必须放到页面的<head>区内,如下所示:

<head>

<link href="style1.css"rel="stylesheet"type="text/css"media="all">

</head>

上面这个例子表示浏览器从style1.css文件中以文档格式读出定义的样式表。rel="stylesheet"是指在页面中使用这个外部的样式表。type="text/css"是指文件的类型是样式表文本。href="style1.css"是文件所在的位置。media是选择媒体类型,这些媒体包括:屏幕、纸张、语音合成设备、盲文阅读设备等。

一个外部样式表文件可以应用于多个页面。当改变这个样式表文件时,所有页面的样式都随之而改变。在制作大量相同样式页面的网站时非常有用,不仅减少了重复的工作量,而且有利于以后的修改、编辑,浏览时也避免了重复下载代码。

样式表文件可以用记事本打开并编辑,一般样式表文件扩展名为.css。内容是定义的样式表,不包含HTML标记,style1.css这个文件的内容如下所示:

978-7-111-59436-9-Chapter02-12.jpg

3.内嵌样式

内嵌样式是混合在HTML标记里使用的,用这种方法可以很简单地对某个元素单独定义样式。内嵌样式的使用是直接将在HTML标记里加入style参数,而style参数的内容就是CSS的属性和值,如下例展示如何改变段落的颜色为蓝色和左外边距为45。

【例2-7】制作使用CSS中的内嵌样式:

<html>

<head>

<meta charset="gb2312">

<title>重庆航天职业技术学院</title>

</head>

<body>

<p style="color:blue;margin-left:45px;">

航天欢迎你!

</p>

</body>

</html>

2.3.2 网页元素的颜色

网页中颜色的运用是网页必不可少的一个元素。使用颜色的目的在于有区别、有动感(特别是超链接中运用)、美观,同时颜色也是各种各样网页的样式表现元素之一。

颜色是由红(RED)、绿(GREEN)、蓝(BLUE)光线的显示结合。CSS中定义颜色使用十六进制(hex)表示法为红、绿、蓝的颜色值结合。

CSS可以处理16777216种颜色(256×256×256),可以使用名字、RGB值或十六进制代码。

例如蓝色:blue=rgb(0,0,255)=rgb(0%,0%,100%)=#0000ff=#00f

CSS拥有16种合法的预定义颜色名字。它们是aqua(水绿)、black(黑)、blue(蓝)、fuchsia(紫红)、gray(灰)、green(绿)、lime(浅绿)、maroon(褐)、navy(深蓝)、olive(橄榄)、purple(紫)、red(红)、silver(银)、teal(深青)、white(白)和yellow(黄),并且transparent(透明)也是一个合法值。

在RGB的从0至255的3个值中,0是最低阶的(如没有红色),255是最高阶(如全是红色),这些值也可以是百分比。十六进制3个或6个数字长度前面带上#字符,3个长度是6个的压缩形式,比如#f00是ff0000的压缩,#c96是#cc9966的压缩。三位数很好理解,像RGB,第一个是红色,第二个是绿色,第三个蓝色。但六位数给予更多的颜色控制。

颜色可以使用color和background-color。color用于文字颜色设置,background-color用于文字颜色背景设置。

【例2-8】制作实现了样式表中颜色变化效果,在浏览器中显示如图2-6所示。

978-7-111-59436-9-Chapter02-13.jpg

图2-6 color与background-color的效果图

代码如下:

978-7-111-59436-9-Chapter02-14.jpg

该例中h1的文字部分变成黄色,文字背景变成蓝色,color和back ground-color可以使用在绝大部分HTML元素中。

978-7-111-59436-9-Chapter02-15.jpg

文本样式设计

2.3.3 文本样式设计

CSS文本样式是相对于内容进行的样式修饰。由于在层次关系中,内容是在背景以上的,所以文本样式相对而言更加重要。文本和字体样式之间是不同的,简单地讲,文本是内容,而字体则用于显示这个内容。

CSS中常见的有以下6种文本样式:首行缩进(text-index)、水平对齐(text-align)、字间隔(word-spacing)、字母间隔(letter-spacing)、文本转换(text-transform)、文本修饰(text-decoration)。

1.首行缩进(text-index)

首行缩进是将段落的第一行缩进,这是常用的文本格式化效果,就像中文写作时开头空两格一样。text-index主要有以下取值。

1)length:定义固定的缩进。

2)%:定义基于父元素的百分比缩进。

3)inherit:定义从父元素继承该属性。

【例2-9】制作文本中的首行缩进,在浏览器中实现如图2-7所示。

978-7-111-59436-9-Chapter02-16.jpg

图2-7 首行缩进效果

代码如下:

978-7-111-59436-9-Chapter02-17.jpg

在这段代码中text-indent:30px;声明了p这段文字首行缩进30px。

2.文本的对齐方式(text-align)

文本排列属性是用来设置文本的水平对齐方式。文本对齐方式有以下几种。

1)left:左对齐。

2)center:居中对齐。

3)right:右对齐。

4)justify:两端对齐。

在默认状态下对齐方式为left。

【例2-10】制作CSS中的文本对齐方式,在浏览器中显示如图2-8所示。

978-7-111-59436-9-Chapter02-18.jpg

图2-8 对齐方式效果图

代码如下:

978-7-111-59436-9-Chapter02-19.jpg

978-7-111-59436-9-Chapter02-20.jpg

在这段代码中text-align:center声明h1这段文字居中,text-align:right声明了类为date的这段文字右对齐,ext-align:justify声明类为main的这段文字为两端对齐,没有声明的默认左对齐。

3.文本修饰(text-decoration)

text-decoration属性用来设置或删除文本的装饰。text-decoration常见有以下值。

1)none:无。

2)underline:下画线。

3)overline:上画线。

4)line-through:中画线。

从设计的角度来看,text-decoration属性主要是用来删除链接的下画线。

【例2-11】制作CSS中的文本修饰text-decoration属性,在浏览器中显示如图2-9所示。

978-7-111-59436-9-Chapter02-21.jpg

图2-9 文本修饰效果图

代码如下:

<html>

<head>

<meta charset="utf-8">

<title>重庆航天职业技术学院</title>

<style>

h1{text-decoration:overline;}

h2{text-decoration:line-through;}

h3{text-decoration:underline;}

</style>

</head>

<body>

<h1>皮耶罗简介1</h1>

<h2>皮耶罗简介2</h2>

<h3>皮耶罗简介3</h3>

<h>皮耶罗简介</h>

</body>

</html>

在这段代码中,text-decoration:overline声明h1这段文字有上画线,text-decoration:line-through声明h2的这段文字有中画线,text-decoration:underline声明h3的这段文字有下画线,没有声明的默认没有线。

4.文本转换(text-transform)

文本转换属性是用来指定在一个文本中的大写和小写字母,可用于所有字句变成大写或小写字母,或每个单词的首字母大写。text-transform常见有以下值。

1)uppercase:全大写。

2)lowercase:全小写。

3)capitalize:首字母大写。

【例2-12】制作CSS中文本转换text-transform属性,在浏览器中显示如图2-10所示。

978-7-111-59436-9-Chapter02-22.jpg

图2-10 文本转换效果图

代码如下:

<html>

<head>

<meta charset="utf-8">

<title>重庆航天职业技术学院</title>

<style>

p.uppercase{text-transform:uppercase;}

p.lowercase{text-transform:lowercase;}

p.capitalize{text-transform:capitalize;}

</style>

</head>

<body>

<p class="uppercase">alessandro delPiero</p>

<p class="lowercase">alessandro delPiero</p>

<p class="capitalize">alessandro delPiero</p>

</body>

</html>

在这段代码中,text-transform:uppercase声明类uppercase这段字母全部为大写,text-transform:lowercase声明类lowercase这段字母全部为小写,text-transform:capitalize声明类capitalize的这段字母首字母大写。

5.字母间隔(letter-spacing)

字母间隔是指字符间距,字母间隔(letter-spacing)常见有以下值。

1)length:定义字符间的固定空间。

2)normal:默认值。

3)inherit:定义从父元素继承属性值。

【例2-13】制作CSS中的字母间隔letter-spacing属性,在浏览器中显示如图2-11所示。

978-7-111-59436-9-Chapter02-23.jpg

图2-11 字母间隔效果图

代码如下:

<html>

<head>

<meta charset="utf-8">

<title>重庆航天职业技术学院</title>

<style>

h1{letter-spacing:5px;}

h2{letter-spacing:-3px;}

</style>

</head>

<body>

<h1>alessandro del Piero1</h1>

<h2>alessandro del Piero2</h2>

<h>alessandro del Piero</h1>

</body>

</html>

在这段代码中,letter-spacing:5px声明h1这段文字字间距为5px,letter-spacing:-3px声明h2这段文字字间距为默认值的-3px。

6.字间隔(word-spacing)

字间隔是指单词间距,用来设置文字或单词之间的间距。实际上,“字”表示的是任何非空白符字符组成的串,并由某种空白符包围。word-spacing常见有以下值。

1)length:定义单词间的标准空间。

2)normal:默认值。

3)inherit:定义从父元素继承属性值。

【例2-14】制作CSS中字间隔word-spacing属性,在浏览器中显示如图2-12所示。

978-7-111-59436-9-Chapter02-24.jpg

图2-12 字间隔效果图

代码如下:

<html>

<head>

<meta charset="utf-8">

<title>重庆航天职业技术学院</title>

<style>

h1{word-spacing:30px;}

</style>

</head>

<body>

<h1>alessandro del Piero1</h1>

<h2>alessandro del Piero2</h2>

</body>

</html>

在这段代码中,word-spacing:30px声明h1这段文字单词间距为30px,没声明则为默认间距。

2.3.4 网页元素的显示

使用display或者visibility属性可以用来设置元素的显示状态。display属性更改元素的渲染方式,即设置一个元素应如何显示;visibility属性指定一个元素应可见还是隐藏。隐藏一个元素可以通过把visibility属性设置为“hidden”,或把display属性设置为“none”。具体设置如下。

1)display:block表示将元素渲染为块级元素。

2)display:list-item表示将元素渲染为列表项目。

3)visibility:hidden可以隐藏某个元素,但隐藏的元素仍需占用与未隐藏之前一样的空间。也就是说,该元素虽然被隐藏了,但仍然会影响布局。

【例2-15】制作CSS中的visibility:hidden属性,在浏览器中显示如图2-13所示。

978-7-111-59436-9-Chapter02-25.jpg

图2-13 使用visibility效果图

代码如下:

<html>

<head>

<meta charset="utf-8">

<title>重庆航天职业技术学院</title>

<style>

h1.hidden{visibility:hidden;}

</style>

</head>

<body>

<h1>你可以看见我!</h1>

<h1 class="hidden">你看不见我!</h1>

<p>我是标签~</p>

</body>

</html>

如图2-13所示,在“你可以看见我!”和“我是标签~”这两个标题之间明显有空白区域。此空白区域就是hidden属性隐藏文字的结果。

4)display:none可以隐藏某个元素,且隐藏的元素不会占用任何空间。也就是说,该元素不但被隐藏了,而且该元素原本占用的空间也会从页面布局中消失。

【例2-16】制作CSS中的display:none属性,在浏览器中显示如图2-14所示。

978-7-111-59436-9-Chapter02-26.jpg

图2-14 使用display效果图

代码如下:

<html>

<head>

<meta charset="utf-8">

<title>重庆航天职业技术学院</title>

<style>

h1.hidden{display:none;}

</style>

</head>

<body>

<h1>你可以看见我!</h1>

<h1 class="hidden">你看不见我!</h1>

<p>我是标签~</p>

</body>

</html>

如图2-14所示,在“你可以看见我!”和“我是标签~”这两个标题之间是没有空白区域的,此区域是none属性带来的结果。

2.3.5 链接样式的设计

使用CSS可以设置网页中超链接的各种属性,如颜色、字体、背景等。不同的链接,可以有不同的样式,这通常用伪类来表示。链接状态有如下4种常见的伪类形式。

●a:link:正常,未访问过的链接。

●a:visited:用户已访问过的链接。

●a:hover:当用户鼠标放在链接上时。

●a:active:链接被单击的那一刻。

【例2-17】制作CSS中的超链接伪类属性,在浏览器中显示如图2-15~图2-17所示:

978-7-111-59436-9-Chapter02-27.jpg

图2-15 未访问链接的颜色

978-7-111-59436-9-Chapter02-28.jpg

图2-16 鼠标移上去的颜色

978-7-111-59436-9-Chapter02-29.jpg

图2-17 鼠标点击的颜色

代码如下:

<html>

<head>

<meta charset="utf-8">

<title>重庆航天职业技术学院</title>

<style>

a:link{color:blue;}

a:visited{color:red;}

a:hover{color:yellow;}

a:active{color:green;}

</style>

</head>

<body>

<p><b><a href="img\1.jpg"target="_blank">点我!</a></b></p>

</body>

</html>

这段代码中超链接设置为未访问链接显示为蓝色,已访问链接显示为红色,鼠标移动到链接上显示为黄色,鼠标单击时显示为绿色。注意:链接状态先后顺序如下,a:link、a:visited最前面,a:hover其次,a:active最后,只有顺序正确才可以看到效果。

2.3.6 字体的设置

在CSS中的字体,实际上是一组用于创建常规、粗体、斜体及大小写字母效果的字体属性。如果在CSS中设置了字体,那么浏览器会从字体族中选择一种最符合要求的字体。如果该字体不存在,那么操作系统会选择一种最接近要求的字体来代替。

CSS字体属性常见有如下8种,详情见表2-1。

2-1 CSS字体属性

978-7-111-59436-9-Chapter02-30.jpg

2.3.7 网页元素的边框与背景

1.CSS边框属性

CSS边框属性允许指定一个元素边框的样式和颜色。

(1)边框样式

边框样式属性指定要显示什么样的边界。采用border-style属性定义边框的样式,常见border-style值如下。

●none:默认无边框。

●dotted:dotted:定义一个点线框。

●dashed:定义一个虚线框。

●solid:定义实线边界。

●double:定义两个边界。两个边界的宽度和border-width的值相同。

●groove:定义3D沟槽边界。效果取决于边界的颜色值。

●ridge:定义3D脊边界。效果取决于边界的颜色值。

●inset:定义一个3D的嵌入边框。效果取决于边界的颜色值。

●outset:定义一个3D突出边框。效果取决于边界的颜色值。

【例2-18】制作网页中的边框效果,在浏览器中显示如图2-18所示。

978-7-111-59436-9-Chapter02-31.jpg

图2-18 边框效果图

代码如下:

978-7-111-59436-9-Chapter02-32.jpg

978-7-111-59436-9-Chapter02-33.jpg

该例给border-style赋予不同的值,就会得到不同的效果图。

(2)边框宽度

边框通过border-width属性来指定宽度。为边框指定宽度有两种方法:可以指定长度值,比如2px或0.1em(单位为px、pt、cm、em等),或者使用3个关键字之一,它们分别是thick、medium(默认值)和thin。在CSS中,系统并没有定义3个关键字的具体宽度,所以用户可以把thick、medium和thin分别设置为自己需要的宽度。

【例2-19】制作网页中的边框宽度,在浏览器中显示如图2-19所示。

978-7-111-59436-9-Chapter02-34.jpg

图2-19 边框效果图

代码如下:

978-7-111-59436-9-Chapter02-35.jpg

该例通过border-width属性来指定宽度,就会得到不同的效果图。

(3)边框颜色

通过border-color属性设置边框的颜色,可以设置的颜色有以下几种类型。

●name:指定颜色的名称,如“red”。

●RGB:指定RGB值,如“rgb(255,0,0)”。

●Hex:指定16进制值,如“#ff0000”。

除此之外,还可以设置边框的颜色为“transparent”(透明)。

但是border-color单独使用是不起作用的,必须先使用border-style来设置边框样式可以来设置边框颜色。

【例2-20】制作网页中边框颜色,在浏览器中显示如图2-20所示。

代码如下:

978-7-111-59436-9-Chapter02-36.jpg

978-7-111-59436-9-Chapter02-37.jpg

该例中使用border-color定义了边框颜色为蓝色。

978-7-111-59436-9-Chapter02-38.jpg

图2-20 边框颜色效果图

2.CSS背景属性

CSS允许应用纯色作为背景,也允许使用背景图像创建相当复杂的效果,CSS在这方面的能力远远在HTML之上。

(1)背景色

用户可以使用background-color属性为元素设置背景色,这个属性接受任何合法的颜色值。

以下规则把元素的背景设置为蓝色:

p{background-color:blue;}

如果希望背景色从元素中的文本向外稍有延伸,只需增加一些内边距:

p{background-color:blue;padding:20px;}

(2)背景图像

要把图像放入背景,需要使用background-image属性。background-image属性的默认值是none,表示背景上没有放置任何图像。

如果需要设置一个背景图像,必须为这个属性设置一个URL值:

body{background-image:url('img/1.jpg');}

大多数背景都应用到body元素,不过并不仅限于此。下面例子为一个段落应用了一个背景,而不会对文档的其他部分应用背景:

p.flower{background-image:url('img/2.jpg');}

甚至可以为行内元素设置背景图像,下面的例子为一个链接设置了背景图像:

a.radio{background-image:url('img/3.jpg');}

(3)水平或垂直平铺

默认情况下,background-image属性会在页面的水平或者垂直方向平铺。一些图像如果在水平方向与垂直方向平铺,这样看起来很不协调,如果图像只在水平方向平铺(repeat-x),页面背景会更好些。

【例2-21】制作网页中背景平铺效果,在浏览器中显示如图2-21所示。

978-7-111-59436-9-Chapter02-39.jpg

图2-21 水平方向平铺效果图

代码如下:

978-7-111-59436-9-Chapter02-40.jpg

978-7-111-59436-9-Chapter02-41.jpg

该例中的图像只在水平方向平铺背景。

除此之外背景还有其他一些属性,如表2-2所示。

2-2 背景属性

978-7-111-59436-9-Chapter02-42.jpg

2.3.8 网页元素的定位

CSS为定位和浮动提供了一些属性,利用这些属性,可以建立列式布局,将布局的一部分与另一部分重叠,还可以完成多年来通常需要使用多个表格才能完成的任务。定位的基本思想很简单,它允许定义元素框相对于其正常位置应该出现的位置,或者相对于父元素、另一个元素甚至浏览器窗口本身的位置。

定位通常有以下4种不同的方法。

1.static定位

HTML元素的默认值,即没有定位,元素出现在正常的流中。静态定位的元素不会受到top、bottom、left、right影响。

2.fixed定位

fixed定位了元素的位置相对于浏览器窗口是固定位置。即使窗口滚动,它也不会跟窗口移动,如下例。

【例2-22】制作网页中的fixed定位效果,在浏览器中显示如图2-22所示。

代码如下:

978-7-111-59436-9-Chapter02-43.jpg

978-7-111-59436-9-Chapter02-44.jpg

从图中可以看见不管网页如何滚动,“意大利球星皮耶罗”这几个字始终在右上角。

978-7-111-59436-9-Chapter02-45.jpg

图2-22 fixed定位效果图

3.relative定位

相对定位(relative)是相对元素默认位置的定位。比如默认标题位,默认正文位等。

【例2-23】制作网页中的relative定位效果,在浏览器中显示如图2-23所示。

978-7-111-59436-9-Chapter02-46.jpg

图2-23 relative定位效果图

代码如下:

978-7-111-59436-9-Chapter02-47.jpg

如图2-23所示,“意大利球星皮耶罗1”这几个字是默认的标题位,当使用了relative定位“意大利球星皮耶罗2”时就会发现,“意大利球星皮耶罗2”相对于“意大利球星皮耶罗”这几个字的位置向左移动了20px。

4.absolute定位

绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于<html>。

【例2-24】制作网页中的absolute定位效果,在浏览器中显示如图2-24所示。

978-7-111-59436-9-Chapter02-48.jpg

图2-24 absolute定位效果图

代码如下:

978-7-111-59436-9-Chapter02-49.jpg

978-7-111-59436-9-Chapter02-50.jpg

在该例中,不管把“意大利球星皮耶罗2”放在代码的任何位置,它都会出现在定位好了的位置上。

2.3.9 网页元素的浮动

CSS的float(浮动)会使元素向左或向右移动,其周围的元素也会重新排列。float(浮动)往往是用于图像,但它在布局时一样非常有用。

1.元素的浮动

元素在水平方向浮动的时候,就代表着元素只能左右移动而不能上下移动。这个时候一个浮动元素会尽量向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。浮动元素之后的元素将围绕它,浮动元素之前的元素将不会受到影响。

【例2-25】制作网页中浮动效果,在浏览器中显示如图2-25所示。

978-7-111-59436-9-Chapter02-51.jpg

图2-25 元素右浮动效果图

代码如下:

978-7-111-59436-9-Chapter02-52.jpg

978-7-111-59436-9-Chapter02-53.jpg

该例中把图像设置为右浮动,文本流环绕在它左边。

2.彼此相邻的浮动元素

在网页中把几个浮动的元素放到一起,如果有空间的话,它们将彼此相邻。对图片使用float属性,就会发现所有图片彼此相邻在一起。当网页页面变大或者变小时,图片也会跟到页面变化位置。

【例2-26】制作网页中的彼此相邻的浮动元素,在浏览器中显示如图2-26和图2-27所示。

978-7-111-59436-9-Chapter02-54.jpg

图2-26 多图片浮动效果A

978-7-111-59436-9-Chapter02-55.jpg

图2-27 多图片浮动效果B

978-7-111-59436-9-Chapter02-56.jpg

2.3.10 CSS动画效果的实现

一些CSS属性是可以有动画效果的,这意味着它们可以用于动画和过渡。动画属性可以逐渐从一个值变化到另一个值,如尺寸大小、数量、百分比和颜色。如需在CSS中创建动画,首先要了解@keyframes规则。@keyframes规则用于创建动画,在@keyframes中规定某项CSS样式,就能创建由当前样式逐渐改为新样式的动画效果。

978-7-111-59436-9-Chapter02-57.jpg

CSS动画

【例2-27】制作CSS中的动画效果,在浏览器中显示如图2-28和图2-29所示。

978-7-111-59436-9-Chapter02-58.jpg

图2-28 变化前

978-7-111-59436-9-Chapter02-59.jpg

图2-29 变化后

代码如下:

978-7-111-59436-9-Chapter02-60.jpg

978-7-111-59436-9-Chapter02-61.jpg

该例中背景颜色逐渐地从红色变化到蓝色。