前端有一个固定大小的div,接到用户不限大小上传的图片后,怎么显示在这个div里,不失图片比例并尽可能展示主要的内容
前端有一个固定大小的div,接到用户不限大小上传的图片后,怎么显示在这个div里,不失图片比例并尽可能展示主要的内容
// html
<div>
<img src="1.png" alt="">
</div>
// css
div {
width: 200px;
height: 200px;
border: 1px solid #ddd;
}
img {
width: 100%;
height: 100%;
}
不管父容器有多高多宽,只要将img的宽高设置成100%(这里的100%是相对于父元素宽高
而言)就能自适应容器大小。不过该方法可能出现失真
。
img {
max-width: 100%;
max-height: 100%;
}
max-width:100%和width:100%到底有什么区别呢?max-width是相对于img自身的尺寸
而言的,也就是图片最大宽度为自身尺寸的宽
。而width的100%是相对于父元素宽度
的,所以max-*可以不让图片因放大而失真。不过该方法可能出现留白
。
假如你的img是作为background使用的就需要通过background-size: cover/contain
。cover和contain到底有什么区别呢?cover
把背景图像扩展至足够大,以使背景图像完全覆盖背景区域。背景图像的某些部分也许无法显示在背景定位区域中。而contain
把图像图像扩展至最大尺寸,以使其宽度和高度完全适应内容区域。
div {
position: relative;
width:200px;
height: 200px;
}
div img {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
min-width: 200px;
}
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答4.9k 阅读✓ 已解决
5 回答2k 阅读
3 回答1.5k 阅读✓ 已解决
object-fit: contain; 哦不对,你是要留白还是拉伸?拉伸的话用 cover
img object-fit 示例