CSS解决图片渲染时拉伸和挤压变形的方法
背景:商品循环出来需要在固定大小里面,但是商品图片大小商家上传时没有规定图片比例,如果写死图片大小会导致图片渲染是拉伸和挤压变形
思路:给图片一个父级容器,父容器给定固定大小,图片限定最大宽度与最小宽度不超过父容器
如:
<style type="text/css">
.bigBox{
display: flex;
}
.imgBox{
width:200px;
height:200px;
margin-right: 10px;
background-color: pink;
}
.imgBox>img{
max-width:100%;
max-height: 100%;
}
</style>
<body>
<div class="bigBox">
<div class="imgBox"><img src="img/1.jpg" alt=""></div>
<div class="imgBox"><img src="img/2.jpg" alt=""></div>
<div class="imgBox"><img src="img/3.jpg" alt=""></div>
<div class="imgBox"><img src="img/4.jpg" alt=""></div>
<div class="imgBox"><img src="img/apple.jpg" alt=""></div>
</div>
</body>
但是图片比例不同会导致留白不同,很不美观逼死强迫症。
然后为了让他更美观,想了一下,决定让图片在父容器中居中显示。
代码如下:
<style type="text/css">
.bigBox{
display: flex;
}
.imgBox{
display: flex;
justify-content: center;
align-items: center;
width:200px;
height:200px;
margin-right: 10px;
background-color: pink;
}
.imgBox>img{
max-width:100%;
max-height: 100%;
}
</style>
<body>
<div class="bigBox">
<div class="imgBox"><img src="img/1.jpg" alt=""></div>
<div class="imgBox"><img src="img/2.jpg" alt=""></div>
<div class="imgBox"><img src="img/3.jpg" alt=""></div>
<div class="imgBox"><img src="img/4.jpg" alt=""></div>
<div class="imgBox"><img src="img/apple.jpg" alt=""></div>
</div>
</body>
这样是不是就好很多了呢。
总结:处理图片渲染是拉伸和挤压变形的主要代码就是给图片一个定死宽高的父容器,把父容器变为弹性盒子,让图片在父容器下居中,最大宽度与高度不超过父容器。
新方法:
<style>
.bigBox{
display: flex;
}
.imgBox{
width:200px;
height:200px;
margin-right: 10px;
background-color: pink;
}
.imgBox>img{
width:100%;
height: 100%;
object-fit:contain;
}
</style>
新方法比之前的方法更简单。