a标签中使用img后的高度多了几个像素

a元素下有一个匿名文本,这个文本外有一个匿名行级盒子,它有的默认vertical-align是baseline的,而且往往因为上文line-height的影响,使它有个line-height,从而使其有了高度,因为baseline对齐的原因,这个匿名盒子就会下沉,往下撑开一些距离,所以把a撑高了。

解决办法一是消除掉匿名盒子的高度,也就是给a设置line-height:0或font-size:0;
解决办法二是给两者vertical-align:top,让其top对齐,而不是baseline对齐
解决办法三是给img以display:block,让它和匿名行级盒子不在一个布局上下文中,也就不存在行级盒的对齐问题

作者:大地Dudy
链接:http://www.zhihu.com/question/26821863/answer/65552730
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

img标签有时候会出现下方无缘无故多出像素的BUG

  1. 解决方法1:

    设置 img 的 vertical-align: bottom;

    ul{ width: 280px; font-size: 0; } ul li{ display:block; height:57px; width:277px; } img{ vertical-align:bottom; }

  2. 2

    解决方法2:

    设置 img 的 margin-bottom: -5px;

    ul{ width: 280px; font-size: 0; } ul li{ display:block; height:57px; width:277px; } img{ margin-bottom: -5px; }

  3. 3

    解决方法3

    设置 ul 的 font-size:0;

    ul{ width: 280px; font-size: 0; } ul li{ display:block; height:57px; width:277px; }

  4. 4

    解决方法4

    使li浮动,并设置img为块级元素

    ul{ width: 280px; } ul li{ float:left; display:block; height:57px; width:277px; } img{ display: block; }

上一篇:学习笔记:UITabBarController使用详解


下一篇:关于网站开发中div标签中设置宽度后其中文本溢出的原因和解决方法