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,让它和匿名行级盒子不在一个布局上下文中,也就不存在行级盒的对齐问题
解决办法一是消除掉匿名盒子的高度,也就是给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:
设置 img 的 vertical-align: bottom;
ul{ 280px; font-size: 0; } ul li{ display:block; height:57px; 277px; } img{ vertical-align:bottom; }
-
解决方法2:
设置 img 的 margin-bottom: -5px;
ul{ 280px; font-size: 0; } ul li{ display:block; height:57px; 277px; } img{ margin-bottom: -5px; }
-
解决方法3
设置 ul 的 font-size:0;
ul{ 280px; font-size: 0; } ul li{ display:block; height:57px; 277px; }
-
解决方法4
使li浮动,并设置img为块级元素
ul{ 280px; } ul li{ float:left; display:block; height:57px; 277px; } img{ display: block; }