我想显示一个带有圆角的图像。因此,图像必须拉伸到容器,但不裁剪任何部分,如object-fit: contain
。然而,border-radius
适用于图像元素,而不是图片内容。下面是一个例子(也是JSFiddle):
body {
width: 100vw;
height: 100vh;
margin: 0;
}
div {
width: 100%;
height: 100%;
}
img {
width: 100%;
height: 100%;
object-fit: contain;
border-radius: 20%;
}
<div>
<img src="https://cdn.pixabay.com/photo/2015/04/23/22/00/tree-736885__480.jpg">
</div>
可以在调整视口大小时检查其工作方式。
那么,有没有一种方法可以让图像元素调整它的边界在两个方向以适应容器,就像object-fit
一样?
或者是一种在图像内容上应用“crop-by-rounded-rect过滤器”的方法?
4条答案
按热度按时间hmmo2u0o1#
我也遇到过这个问题,我找到了解决的办法。如果将高度和宽度设置为自动,img元素将保持其纵横比,图像将接触边框。然后可以使用max-width和max-height来代替width和height。
你可能还需要将img放在父div的中心,因为如果它小于最大尺寸,它将移动到左上角。
vhmi4jdf2#
经过一些研究,这似乎在纯CSS中是不可能的。答案here也证实了这一点。
在这个问题的other answer中,图像视图没有增长到“接触”父容器,因此在它周围留下空白区域 * 在所有4个方向 *,并在容器中心的某个地方保持小。这意味着它的行为方式与问题中的代码不同,其中
img
元素占据整个父区域,然后图片内容“拉伸”以接触object-fit: contain
的最近边界。kb5ga3dv3#
Here是一个解决方案,当容器较小时,它将适合图像:
如果容器比图像大,它只会将其居中。请注意,您可能不想在这一点上拉伸图像,否则它会看起来很糟糕
hujrc8aj4#
虽然这似乎是不可能的,但SVG过滤器可能能够完成这项工作,例如: