Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
3.4k views
in Technique[技术] by (71.8m points)

flex子元素,插入img设置高度100%,宽度超出

flex的子元素div继承了父元素的高度。在子元素插入图片设置图片高度为100%,图片的高度填满父元素,但是宽度超出。请问这是为什么?如何解决?

image.png

<body>
    <div style="height: 300px; width: 500px; background: red; display: flex;">
        <div style="background: mediumseagreen">
            <img src="../../static/imags/voidlogo.jpg" style="height: 100%">
        </div>
    </div>
</body>

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

当你设置height:100%的时候会根据父元素的height来设置高度,但是这里没有明确设置height,但是又设置flex,再flex下面的子元素的高度是和父元素的高度一致的。所以这里设置height:100%,高度显示是正常的.
个人认为应该是以下原因导致的。
1、img查找父元素的height发现是auto于是按原长度显示,这时将父元素撑开了
2、flex生效将子元素的高度拉伸压缩到设置了flex元素的高度
3、img更新视图,高度和父元素同步,但是被撑开的img父元素没有还原,所以会出现这种情况
解决:
img父元素设置height:100%,就是再第一步找到了父元素的height就可以了


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...