行高有关详解分析

一个不起眼的属性,却包含着许多不为人知的秘密。。。

一. 引出问题

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>inline</title>
    <style>
        span{
            background:red;
        }
        .c1{
            line-height: 20px;
        }
        .c2{
            line-height: 8px;
        }
        .c3{
            line-height: 30px;
        }
        .c5{
            line-height: 28px;
        }
    </style>
</head>
<body>
    <div>
        <span class="c1">inline box xfg中文</span>
        <span class="c2">inline box</span>
        <span class="c3">inline box</span>
        inline box
        <span class="c5">inline box</span>
    </div>
</body>
</html>

效果如下:
在这里插入图片描述
我们发现:行高不同,但是渲染的高度是一样的,这是为什么呢?

二. 分析原因

行高的构成:

  • 每一段文本叫做inline box,有标签包裹它的叫做带标签的inline box,没有的叫匿名的inline box.
  • line box 由各个inline box 组成 。
  • line box 的高度由inline box 中最高的组成。
  • line-height由最高的inline box 的高度撑起来。

总结:

  • 行高是由line box决定的。
  • line box 是由inline box组成的
  • inline box 的高度会决定行高的高度。

字体背景色:

  • 背景区域由字体大小决定的(字体的top和bottom区间)
  • 底线和顶线是文本占据的区域, 字体对齐默认是基线对齐。

三. 实例

<div style="border:solid 1px red;">
        <span style="background:blue;color:#fff;font-size:20px;line-height:60px;">
            居中xfg&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;
        </span>
</div>

运行效果:
在这里插入图片描述

分析:span上字体大小为20px,而line-height 为60px,明显60px比20px大,那么大的话多余部分均匀分布到两侧。

进一步思考:
平常我们在一个div中写文字居中一般这样写:

#div1 {
	width: 300px;
	height:100px;
	line-hieght: 100px;
}

其实本质上能够居中的原因还是line-height起的作用,只不过把height和line-height设置为同等高,让他俩吻合而已。。

四. 补充小知识:

  1. 文字对齐可以通过vertical-align来调整,默认是基于基线调整。
  2. 经典的3px空白问题:
    图片下面有空白(空白大小视字体大小而定)。例如字体大小为12px,则空白为3px。因为图片为inline元素,遵守行高的构成,默认对齐方式为基线,所以底部会有空白空隙。

解决方案:使用底部对齐。 vertical-align: bottom;

<div style="background:red">
     <span>文字</span>
     <img src="test.png"/>
</div>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

. . . . .

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

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

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

打赏作者

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

抵扣说明:

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

余额充值