深入理解CSS中的line-height的使用
什么是line-height(行高)?
是指两行文字基线之间的距离。
什么是基线?
基线、底线、顶线、中线
注意:
行距、行高
line-height 与行内框盒子模型
所有内联元素的样式表现都与行内框盒子模型有关。例如浮动的图文环绕效果...
什么是行内框盒子模型
我们通过下面这段代码进行讲解
这是一行普通的文字,这里有个em标签
在这段代码中包含了 中盒子:
内容区是指底线和顶线包裹的区域(行内元素 可以通过 属性显示出来),实际中不一定看得到,但确实存在。内容区的大小依据 的值和字数进行变化。
。内联盒子不会让内容成块排列,而是排成一行。如果外部 水平的标签( 、 、 等)则属于 ,如果是光秃秃的文字则属于 。
。每一行就是一个 。每个行框盒子又是由一个个 组成。
包含盒子。 是由一行一行的 组成。 标签就代表了一个 。(即上图中的绿色部分)
line-height 的高度机理
深入理解内联元素的高度表现
在讲解原理之前,我们先看以下代码:
这是一行普通的文字,这里有个em标签
console.log(document.querySelector('p').clientHeight); // 输出36px
现在我们思考这样几个问题:
:元素的高度是由 决定的:
明明是两基线之间的距离,单行文字哪来行高,还控制了高度?
总结
line-height 的各类属性值
normal
默认属性值,与浏览器相关,且与元素字体相关联。
使用数值作为行高,根据当前元素的 大小计算。
、 、 使用具体单位作为行高值。
使用百分比作为行高值。相对于设置了该 属性的元素的 大小计算。
inherit
,行高继承。使用 可以让文本框样式可控性更强。 行高默认具有继承性,为什么还是这样做??? 的默认行高是 ,而不是继承父级元素的行高。
、 、 的区别
在计算结果上是相同的,但是所影响的元素有区别。
全局数值使用经验
如果是 ,已阅读为主的网页, 较为适宜。
如果是面向用户,并不是阅读为主的网页,则推荐使用匹配 像素的使用经验。 或者合并形式
line-height 与图片高度表现。
不会影响图片的高度。
隐匿文本节点: 标签是一个文本节点,其默认会有文本。即使 ,也就是当内容为空时,也存在文本节点,只不过看不到而已。这样的节点称其为隐匿文本节点,也正因为隐匿文本节点的存在,才会造成下面图中的情形。
如何消除图片与底部之间的间隙?
在项目开发中,我们偶尔会遇到以下情形:
解决的办法主要有以下三种:
1.图片块状化。( )只适用于 元素,也就是说对于 元素并没有基线对齐的说辞。
2.图片底线对齐
3.行高足够小,使基线上移。
line-height的实际应用
1.实现大小不固定的图片,多行文字的垂直居中
2.实现多行文本水平垂直居中
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。