第5章CSS文本常用属性

本章学习目标
 掌握CSS常用的文本样式和排版属性。
 理解CSS伪类的概念及作用。
 掌握利用CSS设置超链接的4种状态的方法。
 了解其他伪类的用法。
在掌握了CSS的语法规则和应用方法之后,想要书写结构层和样式层分离的页面,就要掌握CSS的属性,本章将讲解CSS文本的常用属性。
5.1文本属性
5.1.1文本颜色






文本颜色(color)被用来设置文字的颜色,属性的取值方法如下。
(1) 十六进制值,如#FF0000。
(2) RGB值,如RGB(255,0,0)。
(3) 颜色的名称,如red。
如例5.1所示,分别使用以上3种方法为文本颜色进行赋值,结果页面中的所有一级标题为红色,六级标题为绿色,段落文本为蓝色。

例5.1





1<!DOCTYPE html>

2<html lang="en">

3<head>

4<meta charset="UTF-8">

5<title>文本颜色</title>

6<style type="text/css">

7h1{

8color:#ff0000;

9}

10h6{

11color:rgb(0,255,0);













12}

13p{

14color:blue;

15}

16</style>

17</head>

18<body>

19<h1>一级标题(红色)</h1>

20<h6>六级标题(绿色)</h6>

21<p>段落文本(蓝色)</p>

22</body>

23</html>














5.1.2文本字体
fontfamily用来设置文本字体。fontfamily可以用逗号隔开多个字体名称。假如客户端不认识第1种字体,就自动切换到第2种字体,第2种字体不认识就切换到第3种,以此类推。如果所有列出的字体都不认识,就使用默认字体显示。





body{font-family:"Helvetica Neue",Helvetica,Arial,"Microsoft Yahei","Hiragino Sans GB","Heiti SC","WenQuanYi Micro Hei",sans-serif}









如上例所示,定义了多个字体,一般将中文字体写在英文字体后面。因为英文字体只能渲染英文、数字和一些特殊符号,当遇到中文文本时,会向后寻找中文字体。
Web页面中,常用的中文字体有宋体、微软雅黑、华文细黑(Mac OS中); 常用的英文字体有Tahaoma、Helvetica、Arial、sansserif。其中,Tahaoma和Arial分别用于早期Windows和现在Windows系统; Helvetica用于Mac OS; sansserif用于Linux系统。
字体文件存储于计算机磁盘中的C:/window/fonts位置。





5.1.3文本字号
文本字号(fontsize)属性可能的取值形式如表5.1所示。


表5.1fontsize属性可能的取值形式



值描述

length(常用)把fontsize设置成一个固定的值。如14px、16px
%把fontsize设置为基于父元素的一个百分比值


xxsmall
xsmall
small
medium
large
xlarge
xxlarge把字体尺寸设置为不同的尺寸,从xxsmall到xxlarge。

默认值: medium

续表



值描述

smaller把fontsize设置为比父元素更小的尺寸
larger把fontsize设置为比父元素更大的尺寸
inherit规定从父元素继承字体大小

如例5.2所示,将段落文本字号设置为12px。

例5.2





1<!DOCTYPE html>

2<html lang="en">

3<head>

4<meta charset="UTF-8">

5<title>文本字号</title>

6<style type="text/css">

7p{

8font-size:12px;

9}

10</style>

11</head>

12<body>

13<p>段落一</p>

14<p>段落二</p>

15<p>段落三</p>

16</body>

17</html>













5.1.4字体风格
字体风格(fontstyle)属性用于将字体设置为斜体、倾斜体或正常字体。该属性可能的取值如表5.2所示。


表5.2fontstyle属性可能的取值



值描述

normal默认值。浏览器显示标准字体样式
italic浏览器显示斜体字体样式
oblique浏览器显示倾斜字体样式
inherit从父元素继承字体样式

如例5.3所示,分别为段落文本定义了普通样式、斜体样式和倾斜体样式,效果如图5.1所示。

例5.3





1<!DOCTYPE html>

2<html lang="en">

3<head>

4<meta charset="UTF-8">

5<title>文本风格</title>

6<style type="text/css">

7p.normal {font-style:normal}

8p.italic {font-style:italic}

9p.oblique {font-style:oblique}

10</style>

11</head>

12<body>

13<p class="normal">段落一</p>

14<p class="italic">段落二</p>

15<p class="oblique">段落三</p>

16</body>

17</html>











图5.1fontstyle属性正常样式、斜体样式

和倾斜体样式效果







5.1.5小型大写字母
设置小型大写字母(fontvariant)的字体显示文本时,所有的小写字母均会被转换为大写字母。但是,小型的大写文本与其余文本相比,字体尺寸更小。这个属性可能的取值如表5.3所示。


表5.3fontvariant属性可能的取值



值描述

normal默认值。显示标准字体
smallcaps显示小型大写字母的字体
inherit从父元素继承属性值

如例5.4所示,分别为两个段落设置了不同的字母显示形式,效果如图5.2所示。

例5.4





1<!DOCTYPE html>

2<html lang="en">

3<head>

4<meta charset="UTF-8">

5<title>小型大写字母</title>

6<style type="text/css">

7p.noraml{

8font-variant:normal;

9}

10p.small{

11font-variant:small-caps;

12}

13</style>

14</head>

15<body>

16<p class="normal">This is a paragraph.</p>

17<p class="small">This is a paragraph.</p>

18</body>

19</html>












图5.2小型大写字母和正常英文字体对比







5.1.6文本粗细
文本粗细(fontweight)用来设置文本显示的粗细,可能的取值如表5.4所示。



表5.4fontweight属性可能的取值



值描述

normal默认值。显示标准字符样式
bold粗体字符
bolder更粗体字符
lighter更细体字符


续表



值描述


100
200
300
400
500
600
700
800
900由细到粗的字符。其中,400等同于normal,700等同于bold

inherit从父元素继承字体粗细

如例5.5所示,分别为段落文本定义了正常粗细字体、粗体和细体,显示效果如图5.3所示。

例5.5





1<!DOCTYPE html>

2<html lang="en">

3<head>

4<meta charset="UTF-8">

5<title>文本粗细</title>

6<style type="text/css">

7p.normal{

8font-weight:normal;

9}

10p.cu{

11font-weight: bold;

12}

13p.xi{

14font-weight: lighter;

15}

16</style>

17</head>

18<body>

19<p class="normal">段落文本,正常粗细</p>

20<p class="cu">段落文本,粗体</p>

21<p class="xi">段落文本,细体</p>

22</body>

23</html>










图5.3不同文本粗细效果对比

5.1.7行高





用于设置行间的距离,即行高(lineheight),不允许为负值。行高属性可能的取值如表5.5所示。



表5.5lineheight属性可能的取值



值描述

normal默认值。设置合理的行间距
number数字,用此数字与当前的字体尺寸相乘来设置行间距
length设置固定行距
%基于当前字体尺寸的百分比行距
inherit从父元素继承值

如例5.6所示,分别使用固定像素值、百分比和数值的形式设置了行距,效果如图5.4所示。

例5.6





1<!DOCTYPE html>

2<html lang="en">

3<head>

4<meta charset="UTF-8">

5<title>行距</title>

6<style type="text/css">

7p.big{line-height: 35px;}

8p.small{line-height: 15px;}

9p.persents{line-height: 200%;}

10p.number{line-height: 2;}

11</style>

12</head>

13<body>

14<p>这是默认行高<br>多数浏览器的默认行高为20px <br>认行高段落 <br>默认行高段落 <br>

15</p>

16<p class="big">这是段落35像素行高<br>这个段落文本行高较大 <br>这个段落文本行高较大 <br>

17</p>

18<p class="small">这是段落15像素行高<br>这个段落文本行高较小 <br>这个段落文本行高较小 <br>

19</p>

20<p class="persents">这是段落200%行高<br>这个段落文本行高较大 <br>这个段落文本行高较大 <br>

21</p>

22<p class="number">这是段落2倍字号行高<br>这个段落文本行高较大 <br>这个段落文本行高较大 <br>

23</p>

24</body>

25</html>











图5.4lineheight设置不同值的效果


注意: lineheight与fontsize之间的差值(即行间距)分为两半,分别加到一个文本行内容的顶部和底部,包含这些内容的最小框就是行框。





5.1.8font综合设置属性
font综合设置属性在一个声明中设置所有字体的属性,其语法格式如下: 



font: font-style font-variant font-weight font-size/line-height font-family




在CSS中,属性值可以拆分成多个属性表示的称为复合属性,如下所示。





font: 13px/22px Arial, Helvetica, sans-serif;









上述示例就是使用font复合属性同时设置了字号、行高和字体。字号和行高属性值之间有个斜杠,等同于下面的代码。





font-size:13px;

line-height:22px;

font-family:Arial, Helvetica, sans-serif;









在使用font综合设置属性时,不需要设置的属性可以省略(取默认值)。但是,必须保留fontsize和fontfamily属性,否则font属性将不起作用。
5.1.9文本对齐





文本对齐(textalign)属性设置元素中文本的水平对齐方式,该可能的取值如表5.6所示。



表5.6textalign属性可能的取值



值描述值描述

left左对齐,默认值center居中
right右对齐justify两端对齐

如例5.7所示,设置段落文本的3种对齐方式,效果如图5.5所示。

例5.7





1<!DOCTYPE html>

2<html lang="en">

3<head>

4<meta charset="UTF-8">

5<title>水平对齐方式</title>

6<style type="text/css">

7p.right{text-align: right;}

8p.center{text-align: center;}

9p.left{text-align: left;}

10</style>

11</head>

12<body>

13<p>默认对齐方式文本</p>

14<p class="left">设置了左对齐文本</p>

15<p class="right">设置了右对齐文本</p>

16<p class="center">设置了居中对齐文本</p>

17</body>

18</html>









在例5.7中,第13行代码未设置textalign属性与第14行代码设置的textalign值为left对齐方式效果相同,可见默认的水平对齐方式为左对齐。


图5.5textalign水平对齐方式不同值的效果

5.1.10文本装饰





文本装饰(textdecoration)属性规定添加到文本的修饰,如上画线、下画线和中画线等,可能的取值如表5.7所示。



表5.7textdecoration属性可能的取值



值描述值描述

none标准文本,默认值overline带上画线
underline带下画线linethrough带中画线

在例5.8中,分别为3个三级标题定义了文本装饰为带下画线、带上画线、带中画线,效果如图5.6所示。

例5.8





1<!DOCTYPE html>

2<html lang="en">

3<head>

4<meta charset="UTF-8">

5<title>文本装饰</title>

6<style type="text/css">

7h3.unline{text-decoration: underline;}

8h3.upline{text-decoration: overline;}

9h3.cenline{text-decoration: line-through;}

10</style>

11</head>

12<body>

13<h3>标准文本</h3>

14<h3 class="unline">带下画线文本</h3>

15<h3 class="upline">带上画线文本</h3>

16<h3 class="cenline">带中画线文本</h3>

17</body>

18</html>











图5.6textdecoration不同属性值效果

5.1.11文本缩进





文本缩进(textindent)属性定义文本块中首行文本的缩进。该属性值允许为负值。如果为负值,则首行会被缩进到左边。该属性可能的取值如表5.8所示。



表5.8textindent属性可能的取值



值描述

length固定的缩进。默认值为0
%基于父元素百分比缩进

在中文段落排版中,一般设置文字首行缩进两个中文字符。如例5.9所示,定义了段落标记缩进值为2em。由于采用了em为单位,左缩进2倍字号大小,达到缩进两个字符的效果,如图5.7所示。注意: 在段落的第1行会缩进,而换行之后的行不会缩进。

例5.9





1<!DOCTYPE html>

2<html lang="en">

3<head>

4<meta charset="UTF-8">

5<title>段落缩进</title>

6<style type="text/css">

7p{text-indent: 2em;}

8</style>

9</head>

10<body>

11<p>这是第一个段落<br>第一个段落换行之后的文本<br>第一个段落再换行之后的文本</p>

12<p>这是第二个段落<br>第二个段落换行之后的文本<br>第二个段落再换行之后的文本</p>

13</body>

14</html>











图5.7textindent设置首行缩进两个字符效果


5.1.12字间隔





字间隔(wordspacing)属性定义元素中字之间插入多少空白符。“字”指的是由空白符包围的一个字符串,取值可以为正值或负值,0等同于取值为normal。
如例5.10所示,分别为两个段落定义了宽松的字间隔和紧凑的字间隔。从图5.8可以看出,当wordspacing取值为正时,字间隔较为宽松; 当wordspacing取值为负时,字间隔紧凑甚至缩在一起。

例5.10





1<!DOCTYPE html>

2<html lang="en">

3<head>

4<meta charset="UTF-8">

5<title>字间距</title>

6<style type="text/css">

7p.big{word-spacing: 40px;}

8p.small{word-spacing: -1em;}

9</style>

10</head>

11<body>

12<p class="big">This is some text.</p>

13<p class="small">This is some text.</p>

14</body>

15</html>











图5.8wordspacing设置正值、负值效果


5.1.13字母间隔
字母间隔(letterspacing)属性修改的是字母之间的间隔,取值可为正值、负值或normal(0)。取值可使字母之间的间隔增加或减少指定的值。
如例5.11所示,定义了两个四级标题的字母间隔,取正值时字母间隔稀疏,取负值时紧凑在一起甚至文本显示不全,效果如图5.9所示。

例5.11





1<!DOCTYPE html>

2<html lang="en">

3<head>

4<meta charset="UTF-8">

5<title>字母间隔</title>

6<style type="text/css">

7h4.big{letter-spacing: 16px;}

8h4.small{letter-spacing: -1em;}

9</style>

10</head>

11<body>

12<h4 class="big">This is the header 4.</h4>

13<h4 class="small">This is the header 4.</h4>

14</body>

15</html>










图5.9letterspacing设置正值和负值时的效果








5.1.14处理空白符
处理空白符(whitespace)属性设置布局过程中如何处理元素内的空白。在编辑代码时,会手动输入空格、换行等; 在浏览器渲染页面时,默认情况会合并手动输入的空格,对于按Enter键输入的换行则忽略,但是可以识别<br>标记进行换行,且内容会根据容器大小在边界换行。whitespace属性可能的取值及处理这些情况的方法如表5.9所示。


表5.9whitespace属性可能的取值及处理这些情况的方法



值源 码 空 格源 码 换 行<br>换行容器边界换行

normal合并忽略换行换行
pre保留换行换行不换行
nowrap合并忽略换行不换行
prewrap保留换行换行换行
preline合并换行换行换行


whitespace属性会导致文本排版形式的变化,经常与overflow属性一起使用。
在例5.12中,从第7行代码开始,定义<p>标记宽度为100px,overflow:hidden表示将超出定义大小的内容隐藏; 第11行代码中textoverflow:ellipsis表示溢出的文本将被截断并添加省略号,效果如图5.10所示。

例5.12





1<!DOCTYPE html>

2<html lang="en">

3<head>

4<meta charset="UTF-8">

5<title>文本溢出显示省略号</title>

6<style>

7p{

8width:100px;

9overflow: hidden;

10white-space:nowrap;

11text-overflow: ellipsis;

12}

13</style>

14</head>

15<body>

16<p>前端开发订阅号专注前端开发和技术分享,如果描述超过100像素,则会隐藏,添加省略号</p>

17</body>

18</html>











图5.10溢出文本显示省略号效果


5.2应用案例
制作如图5.11所示的页面效果,其代码如例5.13所示。


图5.11文字排版效果

其中,发布日期之前的“0.775”为红色,之后的发布信息为比标题和正文浅些的灰色; 在段落正文“空白折叠现象……”“文档流指的是元素……”中行距为1.5em,还有个别词组需要加粗显示。

例5.13





1<!DOCTYPE html>

2<html lang="en">

3<head>

4<meta charset="UTF-8">

5<title>CSS标准文档流-EASY BOOK</title>

6<style type="text/css">

7h1{

8color:#404040;

9font-size:30px;

10font-weight:700;

11}

12h1,p{

13color:#404040;

14}

15p img.author{

16width:44px;

17height:44px;

18}

19p.info{

20color:#969696;

21font-size: 12px;

22line-height: 0.1em;

23}

24.red{

25color:red;

26}

27.tit1{

28line-height: 1.5em;

29}

30.content{

31line-height: 1.5em;

32}

33.bold{

34font-weight: bold;

35}

36</style>

37</head>

38<body>

39<h1>CSS标准文档流</h1>

40<p>

41<img src="images/iconh.jpg" alt="" align="left" hspace="8px"class="author">

42天天向上













43<img src="images/attention.jpg" alt="">

44</p>

45<p class="info">

46<img src="images/diamond.gif" alt="">

47<font class="red">0.775</font>

482018.05.29 &nbsp;16:17:50 &nbsp;字数 920&nbsp;

49阅读 7,007

50</p>

51<h1 class="tit1">1.标准文档流</h1>

52<hr>

53<p class="content">

54<!-- 使用span标记本身不会改变文本任何样式 -->

55<span class="bold">空白折叠</span>现象。<span class="bold">高矮不齐,底边对齐;自动换行</span>,一行写不完时,换行写.

56</p>

57<h1 class="tit1">2. 标准流的微观现象: </h1>

58<hr>

59<p class="content">

60<!-- 使用span标记本身不会改变文本任何样式 -->

61<span class="bold">文档流</span>指的是元素排版布局过程中,元素会默认自动<span class="bold">从左往右,从上往下</span>的流式排列方式。并最终<span class="bold">窗体自上而下分成一行行</span>,并在每行中从左至右的顺序排放元素。

62</p>

63原文链接: https://www.jianshu.com/p/4921ba9e101d

64</body>

65</html>









例5.13中,“CSS标准文档流”用<h1>标记实现,没有采用<h1>标记默认的文本粗细,而是定义了值为700。
5.3超链接及CSS伪类选择器
CSS伪类用来给某些选择器添加特殊效果。





5.3.1锚伪类——超链接的4种状态
超链接<a>元素有4种不同的状态,在CSS中可以分别设置如下。
(1) a:link未访问的超链接(未被访问状态: 鼠标未被点击)。
(2) a:visited已访问的超链接(已被访问状态: 鼠标已被点击过)。
(3) a:hover鼠标指针滑过超链接(鼠标指针悬停状态: 鼠标指针位于链接上)。
(4) a:active已选中的超链接(活动状态: 鼠标按下的时候)。
如例5.14所示,未访问过的超链接文本“百度”显示为红色,访问过的超链接文本颜色为绿色,将鼠标指针移动到超链接文本上颜色为洋红,鼠标在超链接文本按下的时候文本显示为蓝色。

例5.14





1<!DOCTYPE html>

2<html>

3<head>

4<meta charset="UTF-8">

5<title>超链接的4种状态</title>

6<style type="text/css">

7a:link{color:#f00;}/*红色*/

8a:visited{color:#0f0;}/*绿色*/

9a:hover{color:#f0f;}/*洋红*/

10a:active{color:#00f;}/*蓝色*/

11</style>

12</head>

13<body>

14<a href="http://www.baidu.com">百度</a>

15</body>

16</html>









注意: a:hover的定义必须位于a:link和a:visited之后才能生效; a:active必须位于a:hover之后才能生效。
伪类可以与CSS的选择器配合使用,如例5.15所示。

例5.15





1<!DOCTYPE html>

2<html>

3<head>

4<meta charset="UTF-8">

5<title>伪类与其他选择器配合</title>

6<style type="text/css">

7a.noline:link{

8text-decoration: none;

9}

10</style>

11</head>

12<body>

13<a href="http://www.baidu.com">普通超链接</a>

14<br/>

15<a class="noline" href="http://www.sina.com.cn">使用noline类样式的超链接</a>

16</body>

17</html>










图5.12伪类与类选择器配合

使用的效果



只有使用了noline类样式的<a>标记才没有下画线,效果如图5.12所示。
如果想制作如图5.13所示仿百度搜索结果页面。大标题的超链接访问过与未访问过的显示颜色不同,且这两种样式中的关键字都显示红色; 站点名称的文本样式也不同。具体代码如例5.16所示。



图5.13仿百度搜索结果页面


注意: 搜索关键字标红显示,与所在标记文本颜色不同,将这类文本嵌套在<em>等这样的标记中; 再应用定义好的类样式,如例5.16中第7~10行代码和第34、35行代码所示。制作类似效果的时候也可以用<span>和<strong>等类似的行内标记(详见本书6.1.2节)。
例5.16





1<!DOCTYPE html>

2<html lang="en">

3<head>

4<meta charset="UTF-8">

5<title>超链接标记CSS</title>

6<style type="text/css">

7a em,p em{

8color:red;

9font-style: normal;

10}

11p.des{

12color:#333;

13font:12px/1.5em "Microsoft Yahei";

14//微软雅黑字体

15}

16.date{

17color:#666;

18}

19.icon{

20width:14px;

21}

22.website{

23color:green;

24font-size: 12px;













25}

26a.m:visited,a.m:link{

27font-size:12px;

28color:#666;

29}

30</style>

31</head>

32<body>

33<p>

34<a href="#">关于<em>css超链接</em>样式的小<em>案例</em>-weishaohang的专栏-CSDN博客

35</a>

36</p>

37<p class="des">

38<!--span 标记本身不会产生任何样式上的变化-->

39<span class="date">2013年3月28日 -</span> 通过一个简单的对文本设置<em>css</em> a样式情况了解学习CSS a锚文本样式。1、案例<em>css</em>...一、HTMLHTML: 超文本标记语言."超文本" : 页面中包含图片、链接等...

40</p>

41<p>

42<img src="csdn.jpeg" alt="" class="icon">

43<a class="website" href="#">CSDN技术社区</a>

44<img src="down.gif" alt="">-

45<a href="#" class="m">百度快照</a>

46</p>

47<p>&nbsp;</p>

48<p>

49<a href="#123">HTML<em>超链接</em>a标记<em>CSS</em>样式写法示例- <em>CSS</em>教程_Web开发者-专业的开发...

50</a>

51</p>

52<p class="des">

53<!--span 标记本身不会产生任何样式上的变化-->

54<span class="date">2017年7月23日-</span> 下面我们介绍对于<em>css</em>初学者会有一点帮助了,主要告诉你HTML<em>超链接</em>标记<em>CSS</em>样式写法,这里简单举了一个实例。 定义链接样式的四个伪类 1 :link 2 :visite...

55</p>

56<p>

57<a class="website" href="#">www.webkfz.com/WEBkF/C...</a>

58<img src="down.gif" alt="">-

59<a href="#" class="m">百度快照</a>

60</p>

61</body>

62</html>










5.3.2其他伪类
在CSS2之前的版本中,定义的伪类如表5.10所示。







表5.10CSS2之前版本定义的伪类



属性描述CSS版本

:link向未被访问的超链接添加样式1
:visited向被访问过的超链接添加样式1
:hover当鼠标指针悬停在元素上方时,向元素添加样式1
:active向被激活的元素添加样式1
:focus向拥有键盘输入焦点的元素添加样式2
:firstchild向元素的第一个子元素添加样式2
:lang向带有指定lang属性的元素添加样式2

如例5.17所示,演示了:firstchild使用效果。p>em:firstchild表示选择<p>标记的第1个<em>元素。

例5.17





1<!DOCTYPE html>

2<html>

3<head>

4<meta charset="UTF-8">

5<title>firstchild用法</title>

6<style type="text/css">

7p>em:first-child{

8font-weight: bold;

9}

10</style>

11</head>

12<body>

13<p><em>:hover"悬停"</em>: 鼠标<em>放到标记上</em>的时候。</p>

14<p><em>:active"激活"</em>: 鼠标<em>单击标记,但是不松开</em>鼠标。</p>

15</body>

16</html>









在例5.17中,第8行代码fontweight是字体粗细属性,bold表示粗体。由于选择器只选中了<p>标记中的第1个<em>标记,只有第1对<em>标记内文本加粗显示,效果如图5.14所示。


图5.14使用em:firstchild选择第1个<em>子元素