解决 div或者a标签的高度比里面的img高度高问题

描述 

设置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即可  










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值