line-height使文本居中的3像素bug问题
2008-10-17 19:21
330 查看
虽然题目这么写,可是这真是bug吗?我觉得不算。
line-height使文本居中的3像素bug,先查下这3px的底细,怎么查?观察 FW
先写个height、line-height都为30px,背景为红色的元素,设置文字为12px。然后量下,果然有3px的bug。同时增加或者减少height、line-height 1px发现如果当前值是奇数那1px会加到文字和底部空间里而减少时减掉的是文字和顶部空间的1px(加下减上);为偶数时刚好相反:加上减下。当我们给文字加下划线的时候发现文字的垂直位置并没变,这能说明什么呢?还不太肯定,继续同时减小heighe、line-height直到一个合适的值:14px,这时候我们可以看到文字和下划线都是完整的,继续减小1px。这时IE已经不按我们刚才发现的规矩办事了,文字上面被截去1px,这样看来14px应该是IE认为的一个临界点,此时整体高低减去文字高度刚好为3px。会不会?。。。因为这时文字是顶这上边界的,我们把文字增加到2行,发现了吧,第二行的文字不是顶这第一行的下划线的,而是有1px的距离。3px果然是下划线的高度。
其实这里还有一点特殊的地方就是如果我们一开始把height、line-height都设为31px那这时3px会变为2px。这个可以用我们上面得出的“偶数情况加上减下的结论”解释:heighe、line-height同为30px的时候上下空白区域高度差是3px,然后height、line-height同时加1px,这1px应该是加到上部空间里,所以3pxbug会变成2pxbug。
运行代码框
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body >
<div style="height:23px;line-height:25px;background:red;color:#FFFFFF;font-size:12px;overflow:Hidden;">文字字</div>
</body>
</html>
[Ctrl A 全部选择 提示:你可先修改部分代码,再按运行]
line-height使文本居中的3像素bug,先查下这3px的底细,怎么查?观察 FW
先写个height、line-height都为30px,背景为红色的元素,设置文字为12px。然后量下,果然有3px的bug。同时增加或者减少height、line-height 1px发现如果当前值是奇数那1px会加到文字和底部空间里而减少时减掉的是文字和顶部空间的1px(加下减上);为偶数时刚好相反:加上减下。当我们给文字加下划线的时候发现文字的垂直位置并没变,这能说明什么呢?还不太肯定,继续同时减小heighe、line-height直到一个合适的值:14px,这时候我们可以看到文字和下划线都是完整的,继续减小1px。这时IE已经不按我们刚才发现的规矩办事了,文字上面被截去1px,这样看来14px应该是IE认为的一个临界点,此时整体高低减去文字高度刚好为3px。会不会?。。。因为这时文字是顶这上边界的,我们把文字增加到2行,发现了吧,第二行的文字不是顶这第一行的下划线的,而是有1px的距离。3px果然是下划线的高度。
其实这里还有一点特殊的地方就是如果我们一开始把height、line-height都设为31px那这时3px会变为2px。这个可以用我们上面得出的“偶数情况加上减下的结论”解释:heighe、line-height同为30px的时候上下空白区域高度差是3px,然后height、line-height同时加1px,这1px应该是加到上部空间里,所以3pxbug会变成2pxbug。
运行代码框
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body >
<div style="height:23px;line-height:25px;background:red;color:#FFFFFF;font-size:12px;overflow:Hidden;">文字字</div>
</body>
</html>
[Ctrl A 全部选择 提示:你可先修改部分代码,再按运行]
相关文章推荐
- 关于背景图相对父容器垂直居中问题 —— vertical-align 和 line-height 之间的区别
- line-height多行文本垂直居中
- line-height ~ text-align 文本居中与垂直居中 | div水平垂直居中
- ie9解决line-height不居中问题-兼容问题
- 移动端android上line-height不居中的问题
- 垂直居中问题不只有 line-height 可以解决,还有一个哥们叫 margin-top
- 使用css属性line-height实现文字垂直居中的问题
- line-height不能居中的问题
- 解决input设置line-height不居中的兼容性问题
- input框的placeholder使用line-height在Safari上不垂直居中的问题
- 移动端android上line-height不居中的问题的解决
- CSS行高——line-height 文本的垂直居中(display:block;情况下)
- ie9不支持line-height_ie9不支持字体垂直居中兼容问题解决篇_IE9中字体不能垂直居中解决方法
- CSS行高(line-height)及文本垂直居中原理
- 文本框Input Text文本垂直居中(line-height)
- input框的placeholder使用line-height在Safari上不垂直居中的问题
- 如何解决input设置背景,在ie6下文本不居中的问题
- div在设置了宽度后的line-height问题
- IE9不支持CSS line-height的文字垂直居中解决方法