我怎样才能在 CSS 中使用 "object-fit: contain" 而图像上仍然有一个边框半径?
How can I use "object-fit: contain" in CSS and still have a border radius on the image?
我正在尝试以“灯箱”样式显示图像,以便它填充屏幕上的可用区域,在本例中为页面宽度的 90% 和高度的 70%。
使用 object-fit: contain;
似乎是实际的方法,但它不适用于 border-radius
。是否可以在 <img>
上使用 object-fit 并仍然按预期应用边界半径?
您需要调整浏览器大小 window 以查看当您 运行 以下代码段时会发生什么。根据下面的视频,我得到了 same code running in JSFiddle。
div {
margin: auto;
width: 90vw;
height: 70vh;
background-color: DeepSkyBlue;
}
img {
width: 100%;
height: 100%;
object-fit: contain;
border-radius: 50px;
background-color: Crimson;
}
<div>
<img src="https://images.freeimages.com/images/large-previews/773/koldalen-4-1384902.jpg">
</div>
如评论所述,设置 max-width
和 max-height
似乎是您需要或期望的:
div {
margin: auto;
width: 90vw;
height: 70vh;
display:grid;
background-color: DeepSkyBlue;
}
img {
max-width: 100%;
max-height: 100%;
margin:auto;/* x,y center if inside a grid or flex box */
object-fit: contain;/* useless by now, img should keep its ratio */
border-radius: 50px;
border-radius: calc( 5vw + 5vh); /* will scale, maybe you find this usefull */
background-color: Crimson;
}
<div>
<img src="https://images.freeimages.com/images/large-previews/773/koldalen-4-1384902.jpg">
</div>
使用object-fit: cover;
而不是包含
遏制在这里并没有真正的帮助。
相反,将 img 的最大宽度和高度设置为 100%。系统将完全从上到下或从一侧到另一侧适合它,但 img 元素将具有它需要的任何尺寸,因此边框半径将适用于它。
要使 img 居中,如果这是您想要的,您可以 display: flex
父项 div 和 justify/align 项居中。
div {
margin: auto auto;
width: 90vw;
height: 70vh;
display: flex;
justify-content: center;
align-items: center;
background-color: DeepSkyBlue;
}
img {
max-width: 100%;
max-height: 100%;
border-radius: 50px;
background-color: Crimson;
}
<div>
<img src="https://images.freeimages.com/images/large-previews/773/koldalen-4-1384902.jpg">
</div>
我正在尝试以“灯箱”样式显示图像,以便它填充屏幕上的可用区域,在本例中为页面宽度的 90% 和高度的 70%。
使用 object-fit: contain;
似乎是实际的方法,但它不适用于 border-radius
。是否可以在 <img>
上使用 object-fit 并仍然按预期应用边界半径?
您需要调整浏览器大小 window 以查看当您 运行 以下代码段时会发生什么。根据下面的视频,我得到了 same code running in JSFiddle。
div {
margin: auto;
width: 90vw;
height: 70vh;
background-color: DeepSkyBlue;
}
img {
width: 100%;
height: 100%;
object-fit: contain;
border-radius: 50px;
background-color: Crimson;
}
<div>
<img src="https://images.freeimages.com/images/large-previews/773/koldalen-4-1384902.jpg">
</div>
如评论所述,设置 max-width
和 max-height
似乎是您需要或期望的:
div {
margin: auto;
width: 90vw;
height: 70vh;
display:grid;
background-color: DeepSkyBlue;
}
img {
max-width: 100%;
max-height: 100%;
margin:auto;/* x,y center if inside a grid or flex box */
object-fit: contain;/* useless by now, img should keep its ratio */
border-radius: 50px;
border-radius: calc( 5vw + 5vh); /* will scale, maybe you find this usefull */
background-color: Crimson;
}
<div>
<img src="https://images.freeimages.com/images/large-previews/773/koldalen-4-1384902.jpg">
</div>
使用object-fit: cover;
而不是包含
遏制在这里并没有真正的帮助。
相反,将 img 的最大宽度和高度设置为 100%。系统将完全从上到下或从一侧到另一侧适合它,但 img 元素将具有它需要的任何尺寸,因此边框半径将适用于它。
要使 img 居中,如果这是您想要的,您可以 display: flex
父项 div 和 justify/align 项居中。
div {
margin: auto auto;
width: 90vw;
height: 70vh;
display: flex;
justify-content: center;
align-items: center;
background-color: DeepSkyBlue;
}
img {
max-width: 100%;
max-height: 100%;
border-radius: 50px;
background-color: Crimson;
}
<div>
<img src="https://images.freeimages.com/images/large-previews/773/koldalen-4-1384902.jpg">
</div>