关于使用line-height单行文本的垂直居中问题

在前端开发中经常用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也都存在这个问题,
比如:
[code=”html”]

文字字

[/code]
如图:2009-05-24_164111

文字上面是6像素,文字下面是8像素。(转载请注明出处:WEB前端开发 https://www.html.cn/)
再如:
[code=”html”]

文字字

[/code]

ie下:文字上面是8像素,文字下面是11像素;firefox,Opera,Safari下:文字上面是9像素,文字下面是10像素;

算一下我们就可以知道,其实没带下划线的12px文字在显示的时候都是11像素。
有2个相对解决方案;
方案1、加padding-top:(转载请注明出处:WEB前端开发 https://www.html.cn/)

[code=”html”]

文字字

[/code]

方案2、加overflow:hidden:

[code=”html”]

文字字

[/code]

赞(0) 打赏
未经允许不得转载:WEB前端开发 » 关于使用line-height单行文本的垂直居中问题

评论 5

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #-49

    飘过…..竟然要邮箱的…..

    坏坏滴王子10年前 (2009-05-24)回复
  2. #-48

    overflow:hidden 太暴力了!

    JashionXu9年前 (2010-04-01)回复
  3. #-47

    今天第一次碰到,应该以前也碰到过,可能是不明显,没有太注意,今天做tab切换的时候,由于背景有线条,这个问题过于明显,碰巧我的想法刚好和你的方案2苟同。不过。楼上说的对overflow确实比较暴力。特别测试过taobao等网站,也都有这个问题,估计是大家都认为没有办法解决吧?从你发文章到现在已经有一段时间了,找到更好的解决方法了吗?

    uoian9年前 (2010-05-28)回复
  4. #-46

    这里有一篇关于居中的文章《CSS3 Flexbox轻松实现元素的水平居中和垂直居中》可以作为这里的补充说明!http://yunkus.com/article/css3/286.html

    云库网3年前 (2015-10-04)回复

前端开发相关广告投放 更专业 更精准

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏