<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8" />
<title>标题</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<h2>为什么这里的图片,作为Flex的子元素,没有被压缩?</h2>
<h3>图片没有被压缩</h3>
<div class="main-box1">
<img src="./1.png" />
<img src="./1.png" />
<img src="./1.png" />
<img src="./1.png" />
</div>
<h3>div被压缩了</h3>
<div class="main-box2">
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</body>
</html>
.main-box1,
.main-box2 {
display: flex;
border: 4px solid aquamarine;
width: 300px;
}
.main-box1 img,
.main-box2 div {
width: 100px;
height: 100px;
}
.main-box2 div {
background-color: pink;
}
.main-box2 div:nth-child(2n) {
background-color: antiquewhite;
}
因为
flex
的子元素的min-width
和min-height
值比较特殊,是auto
,一般情况下相当于内容大小和本身大小中的较小值img
图片大小可认为是内容大小如果给
div
的子元素或伪元素设置宽度,div
也会被撑开,尝试添加下面代码看效果:想超出时自动收缩的话,设置
min-width: 0;
即可