解决图片把父元素向下撑大大约3px问题

现象

 bug: 图片在div\li\dt 等  图片把父元素向下撑大大约3px
 <style>
        img {
            width: 30%; //这里由于图片过大,等比缩放30%
        }
        div {
            background-color: red;
        }
    </style>
<body>
    <div>
        <img src="./images/2.jpg" alt="">
    </div>

    <img src="./images/3.jpg" alt="">
</body>
产生现象

 

 

产生原因

  img是一种类似text的标签元素,会在末尾加上一个空白符(匿名文本),这个文本外有一个匿名行级盒子,它默认的vertical-align是baseline的,而且往往因为上文line-height的影响,使它有个line-height,从而使其有了高度,因为baseline对齐的原因,这个匿名盒子就会下沉,往下撑开3px。


解决方法

  1、给父元素添加 font-size:0;line-height:0;

  2、元素img添加:  vertical-align: middle/top/bottom;

   3、子元素img添加: float:;,父元素添加overflow:hidden;目的解决父元素高度塌陷(也可以用其他方式解决)

   4、子元素img添加:display: block;,当然也可以是flex,table-cell等。最常用的是block

  5、子元素img添加: margin-top: -3px;

 

posted @ 2020-07-05 11:35  雅痞_yuppie  阅读(582)  评论(0)    收藏  举报