line-height 详解,及个别问题
2013-03-03 22:00
330 查看
在前端开发中经常用line-height定义行高和单行文本的垂直居中,当然偶尔也配合的做其他的垂直居中。 先来看看基本的语法和属性值:
语法:
line-height : normal | number | length | %
参数:
normal 默认。设置合理的行间距。 number 设置数字,此数字会与当前的字体尺寸相乘来设置行间距。 length 设置固定的行间距。 % 基于当前字体尺寸的百分比行间距。
说明:
检索或设置对象的行高。即字体最底端与字体内部顶端之间的距离。 如行内包含多个对象,则应用最大行高。此时行高不可为负值。 对应的脚本特性为lineHeight。
————————————————————–
下面说说再说说line-height单行文本的垂直居中问题
先写个height、line-height都为25px,背景为红色的元素,设置文字为12px。然后量下,文字上面是6像素,文字下面是8像素。。同时增加或者减少height、line-height 1px发现如果当前值是奇数那1px会加到文字和底部空间里而减少时减掉的是文字和顶部空间的1px(加下减上);为偶数时刚好相反:加上减下。当我们给文字加下划线的时候发现文字的垂直位置并没变,这能说明什么呢?还不太肯定,继续同时减小heighe、line-height直到一个合适的值:14px,这时候我们可以看到文字和下划线都是完整的,继续减小1px。这时IE已经不按我们刚才发现的规矩办事了,文字上面被截去1px,这样看来14px应该是IE认为的一个临界点,此时整体高低减去文字高度刚好为3px。会不会?。。。因为这时文字是顶这上边界的,我们把文字增加到2行,发现了吧,第二行的文字不是顶这第一行的下划线的,而是有1px的距离。3px果然是下划线的高度。
其实这里还有一点特殊的地方就是如果我们一开始把height、line-height都设为30px那这时2px会变为3px。这个可以用我们上面得出的“偶数情况加上减下的结论”解释:heighe、line-height同为30px的时候上下空白区域高度差是3px,然后height、line-height同时加1px(就是31px),这1px应该是加到上部空间里,所以3pxbug会变成2pxbug。
IE6-IE8都有这个问题,firefox,Opera,Safari也都存在这个问题, 比如:
如图:
文字上面是6像素,文字下面是8像素。(转载请注明出处:WEB前端开发 http://www.css88.com/) 再如:
ie下:文字上面是8像素,文字下面是11像素;firefox,Opera,Safari下:文字上面是9像素,文字下面是10像素;
算一下我们就可以知道,其实没带下划线的12px文字在显示的时候都是11像素。 有2个相对解决方案; 方案1、加padding-top:(转载请注明出处:WEB前端开发 http://www.css88.com/)
方案2、加overflow:hidden:
view source
print?
语法:
line-height : normal | number | length | %
参数:
normal 默认。设置合理的行间距。 number 设置数字,此数字会与当前的字体尺寸相乘来设置行间距。 length 设置固定的行间距。 % 基于当前字体尺寸的百分比行间距。
说明:
检索或设置对象的行高。即字体最底端与字体内部顶端之间的距离。 如行内包含多个对象,则应用最大行高。此时行高不可为负值。 对应的脚本特性为lineHeight。
————————————————————–
下面说说再说说line-height单行文本的垂直居中问题
先写个height、line-height都为25px,背景为红色的元素,设置文字为12px。然后量下,文字上面是6像素,文字下面是8像素。。同时增加或者减少height、line-height 1px发现如果当前值是奇数那1px会加到文字和底部空间里而减少时减掉的是文字和顶部空间的1px(加下减上);为偶数时刚好相反:加上减下。当我们给文字加下划线的时候发现文字的垂直位置并没变,这能说明什么呢?还不太肯定,继续同时减小heighe、line-height直到一个合适的值:14px,这时候我们可以看到文字和下划线都是完整的,继续减小1px。这时IE已经不按我们刚才发现的规矩办事了,文字上面被截去1px,这样看来14px应该是IE认为的一个临界点,此时整体高低减去文字高度刚好为3px。会不会?。。。因为这时文字是顶这上边界的,我们把文字增加到2行,发现了吧,第二行的文字不是顶这第一行的下划线的,而是有1px的距离。3px果然是下划线的高度。
其实这里还有一点特殊的地方就是如果我们一开始把height、line-height都设为30px那这时2px会变为3px。这个可以用我们上面得出的“偶数情况加上减下的结论”解释:heighe、line-height同为30px的时候上下空白区域高度差是3px,然后height、line-height同时加1px(就是31px),这1px应该是加到上部空间里,所以3pxbug会变成2pxbug。
IE6-IE8都有这个问题,firefox,Opera,Safari也都存在这个问题, 比如:
1 | < div style = "height:25px;line-height:25px;background:red;color:#FFFFFF;font-size:12px;" >文字字</ div > |
文字上面是6像素,文字下面是8像素。(转载请注明出处:WEB前端开发 http://www.css88.com/) 再如:
1 | < div style = "height:30px;line-height:30px;background:red;color:#FFFFFF;font-size:12px;" >文字字</ div > |
算一下我们就可以知道,其实没带下划线的12px文字在显示的时候都是11像素。 有2个相对解决方案; 方案1、加padding-top:(转载请注明出处:WEB前端开发 http://www.css88.com/)
1 | < div style = "height:22px;line-height:22px; padding-top:3px;background:red;color:#FFFFFF;font-size:12px;" >文字字</ div > |
view source
print?
1 | < div style = "height:25px;line-height:28px;background:red;color:#FFFFFF;font-size:12px; overflow:hidden" >文字字</ div > 原文链接:http://www.css88.com/archives/1304#more-1304 |
相关文章推荐
- IE6行高line-height失效问题方法详解
- 深入理解 CSS 中的行高与基线及line-height的用法详解
- CSS —— line-height详解
- div 中img 有间隙问题的解决,line-height=0 line-height 等于0
- 由img和div的间隙引出:line-height以及vertical-align的问题。
- 【转】IE6下Line-height失效问题
- 解决input设置line-height不居中的兼容性问题
- IE6、IE7、IE8、FireFox css line-height兼容问题
- ie9不支持line-height_ie9不支持字体垂直居中兼容问题解决篇_IE9中字体不能垂直居中解决方法
- 移动端android上line-height不居中的问题的解决
- chrome safari 中input垂直居中对齐 行高问题line-height
- line-height详解
- ie9解决line-height不居中问题-兼容问题
- 移动端android上line-height不居中的问题
- 移动端line-height问题
- line-height使文本居中的3像素bug问题
- width,height的问题,span中line-height和padding区别
- css属性行高line-height的用法详解
- Css line-height幻灯片中文详解
- 关于IE6下line-height属性失效问题