![CSS3+DIV网页样式与布局从入门到精通(微课精编版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/876/25456876/b_25456876.jpg)
3.2 文本基本样式
文本样式主要涉及多个字符的排版效果。CSS在命名属性时,使用font前缀和text前缀来区分字体和文本属性。
3.2.1 定义水平对齐
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P78_79395.jpg?sign=1739189715-uOEy4LBm8NTWJKXYw5OGHdBWb297jl7t-0-2aa27e23a1d1d5904c16adaf0473499e)
视频讲解
CSS使用text-align属性来定义文本的水平对齐方式,用法如下。
text-align : left | right | center | justify
该属性取值包括4个:left表示左对齐,默认值;right表示右对齐;center表示居中对齐;justify表示两端对齐。CSS3新增了4个属性:start | end | match-parent | justify-all,由于浏览器支持不是很好,读者可以先暂时了解。
【示例1】本示例定义文档中段落文本居中显示。新建一个网页,保存为test.html,在<head>标签内添加<style type="text/css">标签,定义一个内部样式表,然后输入下面样式,定义居中对齐类样式。
.center { text-align:center;}/* 居中对齐类样式 */
在<body>标签中输入两行段落文本,并分别使用传统的HTMLalign属性和标准设计中CSS的text-align属性定义文本居中。
<p align="center">昨夜西风凋碧树,独上高楼,望尽天涯路</p><!-- 传统居中对齐方式 --> <p class="center">衣带渐宽终不悔,为伊消得人憔悴</p> <!-- 标准居中对齐方式 --> <!-- 标准居中对齐方式 --> <p class="center">众里寻他千百度,蓦然回首,那人却在,灯火阑珊处</p>
在浏览器中预览,可以看到使用传统方式和标准方式设计文本居中的效果是相同的。
【示例2】当text-align属性取值为justify时,可以结合text-justify属性实现更多对齐样式。本示例定义第一段文本两端对齐,第二段文本保持默认对齐方式,效果如图3.5所示。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P79_147368.jpg?sign=1739189715-jvOxIvnRvEIR5Yn5jeRgGhCeJs4aKLxI-0-e699eeeee8f9c5e8253f6ae0a6fdae1c)
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P79_114977.jpg?sign=1739189715-1UmuYxJDKYjNEQhXRQjcUfzxKMPHltis-0-6844d6537876fcb69d11247b5227c30f)
图3.5 两端对齐和默认对齐显示
3.2.2 定义垂直对齐
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P79_114990.jpg?sign=1739189715-W3w3ihY6fzRrrrMT6hFDrHipRTgFizHB-0-938d6cf4917dcab8d263ab716c39cc2a)
视频讲解
CSS使用vertical-align属性来定义文本垂直对齐方式,用法如下。
vertical-align : auto | baseline | sub | super | top | text-top | middle | bottom | text-bottom | length
取值简单说明如下。
☑ auto:表示将根据layout-flow属性的值对齐对象内容。
☑ baseline:默认值,表示将支持valign特性的对象内容与基线对齐。
☑ sub:表示垂直对齐文本的下标。
☑ super:表示垂直对齐文本的上标。
☑ top:表示将支持valign特性的对象的内容对象顶端对齐。
☑ text-top:表示将支持valign特性的对象的文本与对象顶端对齐。
☑ middle:表示将支持valign特性的对象的内容与对象中部对齐。
☑ bottom:表示将支持valign特性的对象的内容与对象底端对齐。
☑ text-bottom:表示将支持valign特性的对象的文本与对象底端对齐。
☑ length:表示由浮点数字和单位标识符组成的长度值或者百分数,可为负数,定义由基线算起的偏移量,基线对于数值来说为0,对于百分数来说就是0%。
【示例1】本示例将演示如何设置字体垂直对齐。新建一个网页,保存为test1.html,在<head>标签内添加<style type="text/css">标签,定义一个内部样式表,然后输入下面样式,定义上标类样式。
.super {vertical-align:super;}
在<body>标签中输入一行段落文本,并应用该上标类样式。
<p>vertical-align表示垂直<span class=" super ">对齐</span>属性</p>
在浏览器中预览,则显示效果如图3.6所示。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P80_79433.jpg?sign=1739189715-3s1P73lt8ydfUsLDCVqjToxfYOd9eMC3-0-307a752d2e414b1c877edd5bd2ca8720)
图3.6 文本上标样式效果
【示例2】本示例演示了不同垂直对齐方式的比较效果。
vertical-align属性提供的值很多,但是IE浏览器与其他浏览器对于解析它们的效果却存在很大的分歧。一般情况下,不建议广泛使用这些属性值,实践中主要用到vertical-align属性的垂直居中样式,偶尔也会用到上标和下标效果。
新建一个网页,保存为test2.html,在<body>标签内输入如下结构。
<p>valign: <span class="baseline"><img src="images/box.gif" title="baseline" /></span> <span class="sub"><img src="images/box.gif" title="sub" /></span> <span class="super"><img src="images/box.gif" title="super" /></span> <span class="top"><img src="images/box.gif" title="top" /></span> <span class="text-top"><img src="images/box.gif" title="text-top" /></span> <span class="middle"><img src="images/box.gif" title="middle" /></span> <span class="bottom"><img src="images/box.gif" title="bottom" /></span> <span class="text-bottom"><img src="images/box.gif" title="text-bottom" /></span> </p>
在<head>标签内添加<style type="text/css">标签,定义内部样式表。然后定义如下类样式。
body {font-size:48px;} .baseline {vertical-align:baseline;} .sub {vertical-align:sub;} .super {vertical-align:super;} .top {vertical-align:top;} .text-top {vertical-align:text-top;} .middle {vertical-align:middle;} .bottom {vertical-align:bottom;}
在浏览器中预览测试,则显示效果如图3.7所示。用户可以通过效果图直观地比较这些取值的效果。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P81_115043.jpg?sign=1739189715-NdZAp2kzf236HZdvDKh1vOmq4gL5jnIR-0-3c5ddcd2208d63f8a8585f063e422658)
图3.7 垂直对齐取值效果比较
3.2.3 定义字距和词距
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P81_115080.jpg?sign=1739189715-ZTUD3vxNDXTplcrqxv0RrrhYsobD5DhK-0-df9ebc63f71d73547dc40219a780a314)
视频讲解
CSS使用letter-spacing属性定义字距,使用word-spacing属性定义词距。这两个属性的取值都是长度值,由浮点数字和单位标识符组成,默认值为normal,表示默认间隔。
定义词距时,以空格为基准进行调节,如果多个单词连在一起,则被word-spacing:视为一个单词;如果汉字被空格分隔,则分隔的多个汉字就被视为不同的单词,word-spacing属性此时有效。
【示例】本示例演示了如何定义字距和词距样式。新建一个网页,保存为test.html,在<head>标签内添加<style type="text/css">标签,定义内部样式表,然后输入下面样式,定义两个类样式。
.lspacing {letter-spacing:1em;} /* 字距类样式 */ .wspacing {word-spacing:1em;} /* 词距类样式 */
在<body>标签中输入两行段落文本,并应用上面两个类样式。
<p class="lspacing">letter spacing word spacing(字间距)</p> <p class="wspacing">letter spacing word spacing(词间距)</p>
在浏览器中预览,则显示效果如图3.8所示。从图中可以直观地看到,所谓字距就是定义字母之间的间距,而词距就是定义西文单词的距离。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P81_115077.jpg?sign=1739189715-A1xvGCOFF51ImeRNtWXXEA6nv0VWGQaW-0-044df05c8b2450116bf6f5a68360ebf5)
图3.8 字距和词距演示效果比较
注意:字距和词距一般很少使用,使用时应慎重考虑用户的阅读体验和感受。对于中文用户来说,letter-spacing属性有效,而word-spacing属性无效。
3.2.4 定义行高
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P82_79658.jpg?sign=1739189715-9ZofX1JVAW7dzgnyH5ewdcqXoYGCPiK7-0-55756cc830b92b8a1705615d7a46f3ce)
视频讲解
行高也称为行距,是段落文本行与文本行之间的距离。CSS使用line-height属性定义行高,用法如下。
line-height : normal | length
其中,normal表示默认值,一般为1.2em;length表示百分比数字,或者由浮点数字和单位标识符组成的长度值,允许为负值。
【示例1】本示例演示了如何定义段落文本行高样式。新建一个网页,保存为test.html,在<head>标签内添加<style type="text/css">标签,定义一个内部样式表,然后输入下面样式,定义两个行高类样式。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P82_147376.jpg?sign=1739189715-nxp2Ig8dVm7fZ0Msi6eqPR7b0xFaD6e7-0-b5e48c6ef88f30c60613e96304c8291b)
在<body>标签中输入两行段落文本,并应用上面两个类样式。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P82_147379.jpg?sign=1739189715-KktKW4OkvVH1HJbvDfAvtJrqljtOXlJy-0-69c495c4eca0333e882b3d31149e04ad)
在浏览器中预览,则显示效果如图3.9所示。
【示例2】本示例演示了不同取值下,行高样式的比较效果。行高取值单位一般使用em或百分比,很少使用像素,也不建议使用。
☑ 当line-height属性取值小于一个字大小时,就会发生上下行文本重叠的现象。在上面的示例基础上,修改定义的类样式。
.p1 { line-height:0.5em;} .p2 { line-height:0em;}
在浏览器中预览,显示效果如图3.10所示,说明当取值小于字体大小时,多行文本会发生重叠现象。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P83_115104.jpg?sign=1739189715-C5rEdQq7BxakpR4WaTVzghoZxyBcjffS-0-1374cc5fd3230ae61bc7f7032d76f157)
图3.9 段落文本的行高演示效果
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P83_115109.jpg?sign=1739189715-jQdPSReV1otlCEhrIOlMV4S1JA4rSNr9-0-275d118f7322b1bfbd6fcf48ac8a977e)
图3.10 段落文本重叠演示效果
☑ 一般行高的最佳设置范围为1.2em~1.8em,当然对于特别大的字体或者特别小的字体,可以特殊处理。因此,用户可以遵循字体越大、行高越小的原则来定义段落行高。例如,如果段落字体大小为12px,则行高设置为1.8em比较合适;如果段落字体大小为14px,则行高设置为1.5em~1.6em比较合适;如果段落字体大小为16px~18px,则行高设置为1.2em比较合适。一般浏览器默认行高为1.2em左右。例如,IE默认为19px,如果除以默认字体大小(16px),则约为1.18em;而Firefox默认为1.12em。
【示例3】本示例演示了如何设置更灵活的行高样式。
用户可以给line-height属性设置一个数值,但是不设置单位。例如:
body { line-height:1.6;}
这时浏览器会把它作为1.6em或者160%,也就是说页面行高实际为19px。利用这种特殊的现象,可以解决多层嵌套结构中行高继承出现的问题。
新建一个网页,保存为test2.html,在<head>标签内添加<style type="text/css">标签,定义一个内部样式表,然后输入下面的样式,设置网页和段落文本的默认样式。
body { font-size:12px; line-height:1.6em; } p { font-size:30px;}
在<body>标签中输入如下标题和段落文本。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P84_147383.jpg?sign=1739189715-yH3uDCDN59O3gwzFMKcJ7XaxmTrxmZ1P-0-76c1c7c2153f310f4dc266303c0309e9)
上面示例定义body元素的行高为1.6em。由于line-height具有继承性,因此网页中的段落文本的行高也继承body元素的行高。浏览器在继承该值时,并不是继承“1.6em”这个值,而是把它转换为精确值(即19px)之后再继承,换句话说,p元素的行高为19px,但是p元素的字体大小为30px,继承的行高小于字体大小,就会发生文本行重叠现象。如果在浏览器中预览,则演示效果如图3.11所示。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P84_79744.jpg?sign=1739189715-1WAZEQpzFFwuuB18KB382qCQjqkVAB4a-0-7f215586c9dab686047a1ace37bfe3bb)
图3.11 错误的行高继承效果
解决方法如下。
在定义body元素的行高时,不为其设置单位,即直接定义为line-height:1.6,这样页面中其他元素所继承的值为1.6,而不是19px,则内部继承元素就会为继承的值1.6附加默认单位em,最后页面中所有继承元素的行高都为1.6em。
body { font-size:12px; line-height:1.6; } p { font-size:30px;}
3.2.5 定义缩进
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P85_115252.jpg?sign=1739189715-HnX3UQBrf1YXMieeCX24W7m4pROwtpgx-0-a2a7692b506fa44495e3059d0603a8e9)
视频讲解
CSS使用text-indent属性定义首行缩进,用法如下。
text-indent : length
length表示百分比数字,或者由浮点数字和单位标识符组成的长度值,允许为负值。建议在设置缩进单位时,以em为设置单位,它表示一个字距,这样比较精确确定首行缩进效果。
【示例1】本示例演示了如何为段落文本定义首行缩进效果。新建一个网页,保存为test.html,在<head>标签内添加<style type="text/css">标签,定义一个内部样式表,然后输入下面样式,定义段落文本首行缩进两个字距。
p {text-indent:2em;} /* 首行缩进两个字距 */
在<body>标签中输入如下标题和段落文本。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P85_147388.jpg?sign=1739189715-zSAxyZOcABeac1Qgr5sRPtdnuPCc7yWD-0-64ddcbefa619c44dc7f2a1061f5b9550)
在浏览器中预览,则可以看到文本缩进效果。
【示例2】使用text-indent属性可以设计悬垂缩进效果。新建一个网页,保存为test1.html,在<head>标签内添加<style type="text/css">标签,定义一个内部样式表,然后输入下面样式,定义段落文本首行缩进负的两个字符,并定义左侧内部补白为两个字符。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P85_147389.jpg?sign=1739189715-myRhsfuI6nrWnrKJCVJ6Sagx6SDEP1Q7-0-95ddc7411ef1ea4fe6d9e64ef70ceace)
text-indent属性可以取负值,定义左侧补白,是为防止取负值缩进导致首行文本伸到段落的边界外边。
在<body>标签中输入如下标题和段落文本。
<h1>《人间词话》节选</h1> <h2>王国维</h2> <p>古今之成大事业、大学问者,必经过三种之境界:"昨夜西风凋碧树。独上高楼,望尽天涯路。"此第 一境也。"衣带渐宽终不悔,为伊消得人憔悴。"此第二境也。"众里寻他千百度,蓦然回首,那人却在,灯火 阑珊处。"此第三境也。此等语皆非大词人不能道。然遽以此意解释诸词,恐为晏欧诸公所不许也。</p>
在浏览器中预览,则可以看到文本悬垂缩进效果,如图3.12所示。
![](https://epubservercos.yuewen.com/782D5E/13908176403385506/epubprivate/OEBPS/Images/Figure-P86_79816.jpg?sign=1739189715-Gx51JV1rYtKkORpeZeKuKoX6zNZvWK3r-0-5b3af4b28a7ff593c4034dcf08fb04d0)
图3.12 悬垂缩进效果