CSS文本属性

CSS Text(文本)属性可定义文本的 外观,比如:文本颜色文本对齐文本装饰文本缩进行间距 等。

文本颜色

color 属性用于定义文本的颜色。

1
2
3
div {
color: red;
}
表示方式 属性值
预定义的颜色值 red,green,blue,black,white,gray
十六进制 #FF0000,#FF6600,#29D794(每两位对应:#红R绿G蓝B)
RGB 代码 rgb(255, 0, 0) 或 rgb(100%, 0%, 0%)

注意: 开发中最常用的是十六进制。

熟记开发常用色:

黑色:black#000000rgb(0, 0, 0)(三原色啥也没有混合就为黑)

白色:white#FFFFFFrgb(255, 255, 255)(三原色全满混合就为白)

灰色:gray#808080rgb(128, 128, 128)(三原色全半混合就为灰)

红色:red#FF0000rgb(255, 0, 0)

绿色:green#008000rgb(0, 128, 0)(绿色较为特殊,green 对应的是 #008000)

蓝色:blue#0000FFrgb(0, 0, 255)

黄色:yellow#FFFF00rgb(255, 255, 0)

青色:#00FFFFrgb(0, 255, 255)

洋红:#FF00FFrgb(255, 0, 255)

橙色:orange

粉色:pink

烈粉色:hotpink(浓度低)、deeppink(浓度高)

天蓝色:skyblue

深色系:dark颜色 如:darkgreen

浅色系:light颜色 如:lightgreen

文本对齐

水平对齐

text-align 属性用于设置元素内文本内容的水平对齐方式。

1
2
3
div {
text-align: center;
}
属性值 解释
left 左对齐(默认值)
rigth 右对齐
center 居中对齐
justify 两端对齐
1
2
3
4
5
6
7
8
9
<style type="text/css">
h1 {
/* 本质是让 h1 盒子里面的文字水平居中对齐 */
/* text-align: center; */
text-align: right;
}
</style>

<h1>右对齐的标题</h1>

注意:

text-align 属性只能作用于 块级元素,并让该块级元素内的 行内元素 实现居中(不一定是文字)。

上述例子中:h1 为块级元素,所以给 h1 设置 text-align,便会作用于里面的文本(如果里面还有行内元素的话,也会一同作用)。

1
2
3
4
5
6
7
8
9
 <style type="text/css">
div {
text-align: center;
}
</style>

<div>
<p>dselegent</p>
</div>

上述例子中:为 div 设置 text-align 之所以能够使其内部的块级元素 p 里的文字居中,原因是 p 会继承父元素 div 的 text-align 属性,所以相当于对 p 设置了 text-align。

垂直对齐

CSS 的 vertical-align 属性使用场景:经常用于设置图片或者表单(行内块元素)与文字垂直对齐。

官方解释:用于设置一个元素的垂直对齐方式,但是它只针对于行内元素或者行内块元素有效。

语法:

1
vertical-align: baseline | top | middle | bottom
描述
baseline 默认。元素放置在父元素的基线上
top 把元素的顶端与行中最高元素的顶端对齐
middle 把此元素放置在父元素的中部
bottom 把元素的顶端与行中最低的元素的顶端对齐

image-20220724114315765

baseline 基线对齐

top 顶部对齐

bottom 底部对齐

middle 居中对齐

这里的居中对齐高度 = 基线高度 + x的高度 / 2

这种居中对齐并非实际上的居中对齐,一般也不会用这种方式对文字进行垂直方向的对齐

图片、表单和文字对齐

图片、表单都属于行内块元素,默认的 vertical-align 是基线对齐。

此时可以给图片、表单这些行内块元素的 vertical-align 属性设置为 middle 就可以让文字和图片垂直居中对齐了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!doctype html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>利用vertical-align实现图片文字垂直居中对齐</title>
<style>
img {
/* vertical-align: bottom; */
/* 让图片和文字垂直居中 */
vertical-align: middle;
/* vertical-align: top; */
}

textarea {
vertical-align: middle;
}
</style>
</head>

<body>
<img src="images/ldh.jpg" alt=""> pink老师是刘德华

<br>
<textarea name="" id="" cols="30" rows="10"></textarea> 请您留言
</body>

</html>

运用重点:

我们知道,当对盒子设置 line-height: 盒子高度; 时,盒子内的 文字 会垂直居中,其实不只是文字可以垂直居中,盒子内的图片同样也能垂直居中,只不过图片默认是基于基线对齐的,所以要真正实现 垂直居中 需要在图片加上:vertical-align: middle;

解决图片底部默认空白缝隙问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<style>
.imgDiv {
border: 5px seagreen solid;
}

.imgDiv img {
width: 400px;
height: 300px;
}
</style>

<div class="imgDiv">
<img src="/assets/news.png" alt="">
</div>

主要解决方法有两种:

  1. 给图片添加 vertical-align: middle | top | bottom 等(推荐)
  2. 把图片转换为块级元素 display: block;

明显默认情况下,图片底部有一定缝隙,我们稍作修改,给img元素添加vertical-align属性值

1
2
3
4
/* 只要不是基线对齐,就能消除底部缝隙 */
vertical-align: top;
vertical-align: bottom;
vertical-align: middle;

Q:为什么图片会有缝隙?

A:图片属于替换元素,特点与文本一致,也有自己的基线,默认也是基线对齐。而基线位置不在最底部,所以会出现缝隙

文本装饰

text-decoration 属性规定添加到文本的修饰,可以给文本添加 下划线删除线上划线 等。

1
2
3
div {
text-decoration: underline;
}
属性值 描述
none 默认,没有装饰线(最常用
underline 下划线,链接 a 自带下划线(常用)
overline 上划线(几乎不用)
line-through 删除线(不常用)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<!doctype html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS文本外观之文本装饰</title>
<style type="text/css">
/* 默认为 none 没有装饰 */
div {
/* 上划线 几乎不用 */
/* text-decoration: overline; */
/* 删除线 不常用 */
/* text-decoration: line-through; */
/* 下划线 常用,链接 a 自带下划线 */
text-decoration: underline;
}

a {
/* 取消 a 默认的下划线 */
text-decoration: none;
color: #333333;
}
</style>
</head>

<body>
<div>粉红色的回忆</div>
<a href="#">JERRY</a>
</body>

</html>

文本缩进

text-indent 属性用来指定文本的第一行的缩进,通常是将段落的首行缩进。

1
2
3
div {
text-indent: 10px;
}

通过设置该属性,所有元素的第一行都可以缩进一个给定的长度,甚至该长度可以是负值。

1
2
3
p {
text-indent: 2em;
}

em 是一个相对单位,就是当前元素 (font-size) 1 个文字的大小,如果当前元素没有设置大小,则会按照父元素的 1 个文字大小。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!doctype html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS文本外观之文本缩进</title>
<style type="text/css">
p {
font-size: 24px;
/* 文本的首行缩进多少距离,不仅可以为正值,还可以为负值 */
/* text-indent: 20px; */
/* em 为相对于当前元素的大小单位 */
text-indent: 2em;
}
</style>
</head>

<body>
<p>打开北京、上海与广州的地铁地图,你会看见三张纵横交错的线路网络,
这代表了中国最成熟的三套城市轨道交通系统</p>

<p>可即使是这样,在北上广生活的人依然少不了对地铁的抱怨,其中谈及最多的问题便是拥挤,
对很多人而言,每次挤地铁的过程,都像是一场硬仗。更何况,还都是败仗居多。</p>

<p>那么,当越来越多的二线甚至三线城市迎接来了自己的地铁,中国哪里的地铁是最拥挤的呢?</p>
</body>

</html>

行间距(行高)

line-height 属性用于设置行间的距离(行高),可以控制文字行与行之间的距离。

1
2
3
p {
line-height: 26px;
}
  • 行间距 = 上间距 + 文本高度 + 下间距

  • 上下间距 = (行间距 - 文本高度)/ 2

  • 文本高度 = font-size

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!doctype html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS文本外观之行间距</title>
<style type="text/css">
/* 行间距 = 上间距 + 文本高度 + 下间距 */
/* 行间距 = 行高 */
/* 文本高度 = 字体像素大小 */
/* 上下间距 = (行间距 - 文本高度)/ 2 */
p {
line-height: 25px;
}
</style>
</head>

<body>
<p>打开北京、上海与广州的地铁地图,你会看见三张纵横交错的线路网络,
这代表了中国最成熟的三套城市轨道交通系统</p>

<p>可即使是这样,在北上广生活的人依然少不了对地铁的抱怨,其中谈及最多的问题便是拥挤,
对很多人而言,每次挤地铁的过程,都像是一场硬仗。更何况,还都是败仗居多。</p>

<p>那么,当越来越多的二线甚至三线城市迎接来了自己的地铁,中国哪里的地铁是最拥挤的呢?</p>
</body>

</html>

补充:行间距测量技巧:上一行文字的底部与本行文字的底部之间的距离就是行间距。

文字阴影

CSS 3 新增了文字阴影。

text-shadow 属性用于为文本添加阴影。

语法:

1
text-shadow: h-shadow v-shadow blur color;
描述
h-shadow 必须。水平阴影的位置。允许负值。
v-shadow 必须。垂直阴影的位置。允许负值。
blur 可选。模糊的距离(虚实程度)。
color 可选。阴影的颜色。参阅 CSS 颜色值。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!doctype html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>文字阴影</title>
<style>
div {
font-size: 50px;
color: salmon;
font-weight: 700;
text-shadow: 5px 5px 6px rgba(0, 0, 0, .3);
}
</style>
</head>

<body>
<div>
你是阴影,我是火影
</div>
</body>

</html>

文本属性总结

属性 表示 注意点
color 文本颜色 我们通常用 十六进制 而且通常是简写形式 #fff(6 个一样可以简写)
text-align 文本对齐 可以设定文字水平的对齐方式
text-indent 文本缩进 通常我们用于段落首行缩进2个字的距离 text-indent: 2em;
text-decoration 文本修饰 牢记 添加下划线 underline 取消下划线 none
line-height 行高 控制行与行之间的距离
CSS字体属性 Emmet语法