1

我正在尝试以“灯箱”样式显示图像,以便它将填充屏幕上的可用区域,在本例中为页面宽度的 90% 和高度的 70%。

使用object-fit: contain;似乎是事实上的方法,但它并不完全适用于border-radius. 是否可以在 an 上使用 object-fit<img>并且仍然按预期应用边框半径?

您需要调整浏览器窗口的大小以查看运行以下代码段时会发生什么。根据下面的视频,我在 JSFiddle 中运行了相同的代码。

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>

4

3 回答 3

2

正如评论的那样,设置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>

于 2021-07-23T17:16:13.557 回答
1

收容在这里并没有真正的帮助。

相反,将 img 的最大宽度和高度设置为 100%。系统将完全从上到下或从一侧到另一侧安装它,但 img 元素将具有所需的任何尺寸,因此边框半径可以正常工作。

要使 img 居中,如果这是您想要的,您可以display: flex将父 div 和对齐/对齐项目到中心。

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>

于 2021-07-23T20:15:41.927 回答
-2

使用 object-fit: cover;而不是包含

于 2021-07-23T17:45:05.953 回答