使用不带单位的line-height

line-height是可以继承的,所以子元素可以不用重复定义line-height。我们一般也会在后面带上单位(如:line-height:22px; 或是line-height:1.4em;),但line-height给人带来麻烦的地方也是这个继承和后面加的单位。

有的时候,我们为了实现单行文字的垂直居中,会给line-height一个和height相同的固定的值;有的时候,我们为了调整特定的某段文字的行间距,通常会考虑使用百分比或者相对尺寸的em。或许是习惯,于是我们都习惯了line-height是要有单位的。这些情况下,我们都不需要考虑line-height的继承,也不会发现任何问题。当然我们在使用line-height继承的时候,就会发现问题的所在。

例如下面的代码:

CSS:
<style>
.line-height-test { width: 200px; line-height: 1.4em; font-size: 12px; }
.line-height-test span { font-size: 30px; font-weight: bold; }
</style>
HTML:
<p class="line-height-test">
<span>白培铭先生于1960年出生于中国台湾,毕业于中国台湾省清华大学核物理系,</span>
之后留学于美国加州大学伯克利分校和密西根大学,获得双硕士学位。在工作之后,凭着对营销领域的浓厚兴趣,他又考入密执安大学深造。
</p> 
效果:
 
 

白培铭先生于1960年出生于中国台湾,毕业于中国台湾省清华大学核物理系, 之后留学于美国加州大学伯克利分校和密西根大学,获得双硕士学位。在工作之后,凭着对营销领域的浓厚兴趣,他又考入密执安大学深造。

你会发现,只要有单位的line-height继承,都发生了重叠的现象。那到底这是什么原因导致的呢?

如果line-height属性值有单位,那么继承的值则是换算后的一个具体的px级别的值(先计算后继承);而如果属性值没有单位,则浏览器会直接继承这个 “因子(数值)”,而非计算后的具体值,此时它的line-height会根据本身的font-size值重新计算得到新的line-height 值(先继承后计算)。

比如有一div及子元素p,div的line-height为150%,由于默认情况的字体大小为16px,所以div的具体line-height值可换算为 16px * 150% = 24px,由于p的line-height会继承24px这个换算过后的具体值,此时p又被重新定义为font- size:30px;字体大小超过了line-height的大小,于是发生重叠。其它单位原理一样。

原文:http://blog.sina.com.cn/s/blog_6c698b5f0100nx3v.html

转载于:https://www.cnblogs.com/nicolaszhao/archive/2010/12/08/1900138.html

/* 全局css变量 */ $--color-primary: #409EFF; .primary-color { color: #409EFF; } .background-opacity { background: rgba(64, 158, 255, 0.6); } .form-widget-list { .ghost{ content: ''; font-size: 0; height: 3px; box-sizing: border-box; background: #409EFF; border: 2px solid #409EFF; outline-width: 0; padding: 0; overflow: hidden; } } .el-form-item--medium { .el-radio { line-height: 36px !important; } .el-rate{ margin-top: 8px; } } .el-form-item--small { .el-radio { line-height: 32px !important; } .el-rate{ margin-top: 6px; } } .el-form-item--mini { .el-radio { line-height: 28px !important; } .el-rate{ margin-top: 4px; } } .el-card { margin-top: 3px; margin-bottom: 3px; } input[type="password"]::-ms-reveal { /* 隐藏IE/Edge原生的密码查看按钮 */ display: none; } /* 滚动条样式 begin */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { width: 8px; background: rgba(#101F1C, 0.1); -webkit-border-radius: 2em; -moz-border-radius: 2em; border-radius: 2em; } ::-webkit-scrollbar-thumb { background-color: rgba(#101F1C, 0.35); background-clip: padding-box; min-height: 28px; -webkit-border-radius: 2em; -moz-border-radius: 2em; border-radius: 2em; } ::-webkit-scrollbar-thumb:hover { background-color: rgba(#101F1C, 0.85); } * {//Firefox浏览器滚动条样式 scrollbar-color: #e5e5e5 #f7f7f9; //滚动条轨道颜色、滚动条滑块的颜色 scrollbar-width: thin; //thin模式下滚动条两端的三角按钮会消失 } /* body {//IE浏览器滚动条样式 scrollbar-shadow-color: #e5e5e5; scrollbar-face-color: #e5e5e5; scrollbar-base-color: #ffffff; scrollbar-arrow-color: #444040; } */ /* 滚动条样式 end */
06-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值