CSS教程:line-height属性的继承

所属分类: 网页制作 / CSS 阅读数: 1288
收藏 0 赞 0 分享

原文:http://www.planabc.net/2008/07/25/unitless-line-heights/
淘宝商城的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》
更多精彩内容其他人还在看

兼容浏览器的css网页细线表格设计

细线表格如果单纯设置边框,很难保证浏览器兼容。
收藏 0 赞 0 分享

FORM 不换行的方法

在写 Html 的时, 写到 FORM 会让造成空隔多空一行 等等的问题。
收藏 0 赞 0 分享

如何使div垂直水平居中的css代码

很多人都会遇到这样的问题:如何使DIV居中,div垂直居中,div水平居中.
收藏 0 赞 0 分享

左侧固定宽度,右侧自适应宽度的CSS布局

这个是我练习做网页查资料查到的,有很多不错的布局。将其总结,并写上自己使用的一些感悟。
收藏 0 赞 0 分享

黑客选择CSS代码挂马 CSS挂马攻防实录

随着Web2.0的普及,各种网页特效用得越来越多,这也给黑客一个可乘之机。他们发现,用来制作网页特效的CSS代码,也可以用来挂马。而比较讽刺的是,CSS挂马方式其实是从防范E挂马的CSS代码演变而来。
收藏 0 赞 0 分享

IE6下CSS定义DIV高度的问题

IE6下默认的字体尺寸大致在 12 – 14px 之间,当你试图定义一个高度小于这个默认值的 div 的时候, IE 会固执的认为这个层的高度不应该小于字体的行高。
收藏 0 赞 0 分享

CSS网页实例 利用box-sizing实现div仿框架结构实现代码

利用box-sizing实现div仿框架.需要的朋友可以参考下。
收藏 0 赞 0 分享

CSS样式表与HTML网页的关系分析

浅谈CSS样式表和html文档的关系.
收藏 0 赞 0 分享

CSS样式表中继承关系的空格与不空格

CSS样式表空格与不空格的关系
收藏 0 赞 0 分享

规范HTML代码可以节省修改代码的时间

css技巧 清除多余的标签让代码更加有意义.
收藏 0 赞 0 分享
查看更多