描述
设置div 宽高100%
a 标签 inline-block 宽高100%
img固定宽高
此时img和a标签之间存在一个高度 不能消除
原因:
a元素或者div元素下有一个匿名文本,这个文本外有一个匿名行级盒子,它有的默认vertical-align是baseline的,而且往往因为上文line-height的影响,使它有个line-height,从而使其有了高度,因为baseline对齐的原因,这个匿名盒子就会下沉,往下撑开一些距离,所以把a撑高了。
解决办法一是消除掉匿名盒子的高度,也就是给a设置line-height:0或font-size:0;
解决办法二是给两者vertical-align:top,让其top对齐,而不是baseline对齐 middle或者bottom都可以这个方法没试过?
解决办法三是给img以display:block,让它和匿名行级盒子不在一个布局上下文中,也就不存在行级盒。img是行内元素,默认display: inline; 它与文本的默认行为类似,下边缘是与基线对齐,而不是紧贴容器下边缘。将displayp设置为block即可消除上面说的几个像素的差别。
也就是说当你嵌套在内的元素是行内文本哪么外边的div或者a标签就存在一个匿名文本的高度
最简单的消除办法就是让这个行内元素img 变为block
当外边是a标签时 及时行内变为block还是存在一个匿名文本高度 给a设置font-size:0 或line-height:0 即可
当外边是div时直接设置img为block即可
综上
外边是block
里边是block
里边不会有匿名文本存在无额外高度
外边是a 标签
里边是blcok
存在额外高度匿名文本
设置a block即可 设置inline-block还是存在高度
如果不想改变a blcok 可以设置 啊lineheight或 font-size
外边是block
里边是行内文本
存在高度
设置里边block即可