显示图像原始大小,如果可能,否则缩小
Display image original size, if possible, else shrink
关于这个一般主题有很多问题,但是 none 满足了我的需要。
我需要展示多张图片,每张都有自己的 div
,但我不知道它们是纵向、横向还是低分辨率。我想做的是显示它们的原始大小(并居中),如果它们适合(即我不想拉伸低分辨率图像),但如果它们大于 div
则缩小它们适当地根据他们的长宽比。
这听起来很简单,但我放弃了 img
元素,建议 width:100%;height:auto;
的解决方案忽略了这样一个事实,即假设是风景图像。
我开始使用背景属性并取得了更大的成功。如果我可以完成这项工作,那么它还有一个额外的好处,那就是它也可以与 IE11 一起使用。例如:
background-image: url("http://example.jpg");
background-position:center center;
background-size: auto;
background-repeat: no-repeat;
如果图像小于 div
,效果很好,但如果原始尺寸太大,则裁剪图像。
有没有办法在这种情况下适当缩放尺寸(与 background-size:contain
一样),但尽可能显示原始尺寸?
我认为您可以通过组合以下两个属性来实现您想要的效果:max-width: 100%
和 max-height: 100%
:
.container {
display: flex;
}
.item {
margin: 1rem;
width: 200px;
height: 200px;
border: 1px solid;
display: flex;
}
img {
max-width: 100%;
max-height: 100%;
margin: auto;
}
<div class="container">
<div class="item">
<img src="https://via.placeholder.com/150x150" />
</div>
<div class="item">
<img src="https://via.placeholder.com/300x200" />
</div>
<div class="item">
<img src="https://via.placeholder.com/200x300" />
</div>
</div>
第一项:图片变小了,保持原来的大小。
第 2 项:图像为横向图像,已缩小以适合。
第 3 项:图像为纵向,已缩小以适合。
这是您需要的吗?
关于这个一般主题有很多问题,但是 none 满足了我的需要。
我需要展示多张图片,每张都有自己的 div
,但我不知道它们是纵向、横向还是低分辨率。我想做的是显示它们的原始大小(并居中),如果它们适合(即我不想拉伸低分辨率图像),但如果它们大于 div
则缩小它们适当地根据他们的长宽比。
这听起来很简单,但我放弃了 img
元素,建议 width:100%;height:auto;
的解决方案忽略了这样一个事实,即假设是风景图像。
我开始使用背景属性并取得了更大的成功。如果我可以完成这项工作,那么它还有一个额外的好处,那就是它也可以与 IE11 一起使用。例如:
background-image: url("http://example.jpg");
background-position:center center;
background-size: auto;
background-repeat: no-repeat;
如果图像小于 div
,效果很好,但如果原始尺寸太大,则裁剪图像。
有没有办法在这种情况下适当缩放尺寸(与 background-size:contain
一样),但尽可能显示原始尺寸?
我认为您可以通过组合以下两个属性来实现您想要的效果:max-width: 100%
和 max-height: 100%
:
.container {
display: flex;
}
.item {
margin: 1rem;
width: 200px;
height: 200px;
border: 1px solid;
display: flex;
}
img {
max-width: 100%;
max-height: 100%;
margin: auto;
}
<div class="container">
<div class="item">
<img src="https://via.placeholder.com/150x150" />
</div>
<div class="item">
<img src="https://via.placeholder.com/300x200" />
</div>
<div class="item">
<img src="https://via.placeholder.com/200x300" />
</div>
</div>
第一项:图片变小了,保持原来的大小。
第 2 项:图像为横向图像,已缩小以适合。
第 3 项:图像为纵向,已缩小以适合。
这是您需要的吗?