CSS基线

line-height

行距、行间距

行距: 相邻文本行间 上一个文本行基线下一个文本行基线 之间的距离。

行间距: 相邻文本行间 上一个文本行下行线下一个文本行上行线 之间的距离。

在这里插入图片描述

行距 = 行间距 + 字体大小

在CSS中,CSS属性line-height则是用于设置真实的行距。从W3C Rec中看出,line-height就是行距,而line-height的字面意思即为“行高”,推导结果CSS中 行高即是行距

了解了行高,行距,行间距。那么接下来介绍line-height的重要属性–垂直居中。

我们知道,行距(leading) = 行间距(line-space) + 字体大小(font-size)。行间距与字体大小都可以通过相应CSS属性设置,问题是行间距所占的空间是怎么分配的呢?

half-leading

CSS采用的是将行间距对半开,然后分配到上下两端,这里引用了Half-leading的概念, Half-leading = 行距/2

由于行距可能为负值,可以知道行间距可能为负数,那么垂直居中还有效么?

答案是肯定的,行间距为负数时,Half-leading 自然也是负数,只是上下两端从增加等量空间变为减少等量空间而已。如下例子:

<div style="position:relative;top:100px;font-size:90px;line-height:10px;background:yellow;">
	<span style="border:solid 1px red;line-height:10px;">x</span>
</div>

在这里插入图片描述

line-height属性

CSS line-height 属性 | 菜鸟教程

CSS line-height 属性 | W3school

描述
可能值normal | <number> | <lenght> | <percentage> | <inherit>
默认值normal
继承性yes
normal

对于normal,其实就是一个值,但是由浏览器决定,实际值一般在1.0~1.2之间(闭区间)

不同浏览器下,normal 不同;
同一浏览器下,font-size 不同,normal 也不同;
同一浏览器下,font-size 相同,font-family 不同,normal 也会变化。

normal 的平均值确实是 1.0~1.2(闭区间),但是具体到特定浏览器、font-family 和 font-size时,normal值可能会大于1.2。

length

指定长度用于计算线盒高度,负值非法。

设置固定值,单位可以是 px 、pt 。

好处就是简单,设置是什么,line-height的实际高度就是什么。

坏处是子元素默认 继承 父容器的line-height,若子元素的font-size 大于 父容器的font-size,那么子元素的文本行会什么密集。

解决方案,一般是采用 相对 font-size 实际大小 来设置 line-height 值的方式,如默认 normal 方法。

percentage(%)

计算值是百分比乘以元素计算字体大小,负值非法。

值的注意的是,参考系的确是font-size,但子元素继承的是父容器的实际 line-height 值,也就是说父容器设置为 font-size:20px;line-height:200%;,子元素继承的line-height值为 40px,而不是 200% ,因此又回到了 方式 的问题了。

number

属性的使用值是 这个数字 乘以 元素的字体大小,负值非法,计算值与指定值相同。

和方式一样,以 font-size 为参考系,以相对值方式设置 line-height。

唯一不同的是,子元素继承的是父容器的值,参考系自动变为子元素的 font-size

line-height: 1.2em;

line-height: 1.2;

上门的两句其实是等价的,若想将参考系 为根元素的 font-size , 需要CSS3的新增line-height:1.2rem;

深入理解 line-height 和 vertical-align

根据WCAG2.0(万维网内容可存取性指南)规定“段落中的行距至少要1.5倍”,那么是否在body设置一下,就一劳永逸了呢?

	body{
		font-size: 16px;
		line-height: 1.5;
	 }
	 h1 {
	 	font-size:32px;
	 }
	 p {
	 	font-size:16px;
	 }
	 #footer {
	 	font-size:12px;
	 }
<h1>深入理解 line-height 和 vertical-align</h1>
<p>In my dual profession as an educator and health care provider, I have worked with numerous children infected with the virus that causes AIDS. The relationships that I have had with these special kids have been gifts in my life. They have taught me so many things, but I have especially learned that great courage can be found in the smallest of packages. Let me tell you about Tyler. 
</p> 
<div id="footer">
	bed and whispered, “I might die soon. I’m not scared. When I die, please dress me in red. Mom promised she’s coming to heaven, too. I’ll be playing when she gets there, and I want to make sure she can find me.”
</div>

效果图
代码效果呈现如图,不难发现,对于h1标题来说,行距有点多,于是可以有如下配置:

	body{
		line-height:1.5;
	}
	h1,h2,h3,h4,h5,h6{
		line-height:1.2;
	}

对比
行距确实减少了!

vertical-align如何对齐?

属性

CSS vertical-align 属性 | W3school

CSS vertical-align 属性 | MDN web docs

它的属性规则还是比较多的,但是也不能都记,或者用的时候挨个查。归纳一下不难发现

  1. 对齐操作必定涉及操作元素和参考系元素,而vertical-align的值全是指的是参考系元素的位置,操作元素则以baseline或者linebox上中下作对齐;
  2. 默认对齐方式为baseline,数量值均是相对于baseline而言。

注意:vertical-align 仅对 inline-level 和 table-cell 元素有效。

baseline
<div style="font-size:14px;">
	<span style="font-size:40px;">line-height x vertical-align</span>
	x for reference frame
</div>

baseline
这里的x for reference frame作为参考系,它的baseline就是 line-height x vertical-align 要对齐的。

在此baseline的基础上设置 lengthpercentage

  • span中设置 vertical-align: 10px;
<div style="font-size:14px;">
	<span style="font-size:40px;vertical-align:10px;">line-height x vertical-align</span>
	x for reference frame
</div>

  • span中设置 vertical-align: -10px;
<div style="font-size:14px;">
	<span style="font-size:40px;vertical-align:-10px;">line-height x vertical-align</span>
	x for reference frame
</div>

在这里插入图片描述

  • div中设置line-height:1;, 同时在span中设置 vertical-align:50%;
<div style="font-size:14px;line-height:1;">
	<span style="font-size:40px;vertical-align:50%;">line-height x vertical-align</span>
	x for reference frame
</div>

在这里插入图片描述

  • div中设置line-height:1;, 同时在span中设置 vertical-align: -50%;
<div style="font-size:14px;line-height:1;">
	<span style="font-size:40px;vertical-align: -50%;">line-height x vertical-align</span>
	x for reference frame
</div>

在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲸落log

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值