line-height 属性的继承问题

本文分析了淘宝商城Detail页面中因商家自定义区块导致的文字重叠问题,并提供了两种解决方案:一是直接设定line-height比例值;二是使用百分比单位设定line-height。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

淘宝商城的 detail 页面“产品详情”部分是商家自定义区块,曾出现这样一个问题:

<style type="text/css">

p {

    line-height:17px;

}

</style>

<div class="mdse-detail">

    <p>

        <strong style="font-size:30px">

            品牌:XZX<br />

            市场价:145元<br />

            颜色:黑色<br />

            面料:棉<br />

            尺码:S  M  L<br />

            衣长:S 89  M 90   L 91<br />

            肩宽:S 35  M 36   L 37<br />

            胸围:S 88  M 92   L 96<br />

            下摆:S 104 M 108  L 112<br />

            袖长:S 17  M 17.5 L18<br />

            由于测量方法不同,误差在2CM左右!

        </strong>

    </p>

</div>

你会发现上面例子的文字会重叠在一起!这是什么原因呢?

由于.detail-content 中的 p 元素继承了默认设置的全局样式 line-height:17px,而自定义区块又是由商家自定义,其内字体被设置为了 font-size:30px;(可能为任意值),根据 Inline formatting model,得知该文字的 line-box 高为 17px,多出的字体部分上下溢出,所以会出现字体重叠的现象。

那这个问题如何解决呢?

解决方案:我们给 .mdse-detail 下的 p 元素设定样式属性 line-height:1.4。

为什么解决方案里的 1.4 不带单位?

元素的 line-height 属性值会继承父元素(或祖先元素)的 line-height 属性值,如果属性值有单位,则继承的值是换算后具体的 px 值而非原始的值(比如:em、%),而如果属性值没有单位,则浏览器会继承数值(无单位),然后根据该元素的 font-size 值重新解析得到新的 line-height 值。这个和 table 的 tr 设置 display 属性有一点点类似(tr.style.display = ”;,IE 显示 block,而 Firefox 等标准浏览器显示 table-row)。

还有另外一个相对低效的方法,但也不失为一个快捷的解决方案:

.mdse-detail p * {

    line-height:140%;

}

参考阅读:《Unitless line-heights》

转载于:https://www.cnblogs.com/ddshou/archive/2009/05/05/1449715.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值