html 在css中,有没有一种方法可以让一个图像总是适合它所在的div?

mkh04yzy  于 2023-02-14  发布在  其他
关注(0)|答案(1)|浏览(121)

我的页面上有一个div占据了视口宽度的三分之二和高度的95%。我计划让图像占据整个div,纵横比为21:9。我将div设置为溢出:隐藏;这意味着左右部分被切掉。这工作得很好,直到你进入高宽比如32:9的屏幕,其中div比图像宽。我想知道是否有一个干净的解决方案,使图像的顶部/底部切掉时,发生这种情况。

HTML:

<figure>
    <a
        href="images/slideshow/00_stellaris_acot.png"
        data-lightbox="ui_overhaul_dynamic"
    >
        <img src="images/slideshow_source/00_stellaris_acot.png" alt="" />
    </a>
    <a
        href="images/slideshow/01_delta.png"
        data-lightbox="ui_overhaul_dynamic"
    >
    </a>
    <a
        href="images/slideshow/02_alpha.png"
        data-lightbox="ui_overhaul_dynamic"
    >
    </a>
</figure>

CSS:

body > main > section > figure {
  background-color: rgb(10, 12, 54);
  border-style: none solid none none;
  overflow: hidden;
}

body > main > section > figure > a > img {
  height: 100%;
  margin-left: 50%;
  transform: translateX(-50%);
}
hjqgdpho

hjqgdpho1#

你可以使用CSS中的object-fit属性来实现这个行为。它指定了一个被替换元素的内容应该如何适应它所使用的高度和宽度所建立的框。
使用object-fit: cover时,图像将覆盖整个容器,同时保留其纵横比,切断任何溢出:

body > main > section > figure > a > img {
  height: 100%;
  width: 100%;
  object-fit: cover;
}

或者,您可以设置object-fit: contain,图像将适合容器,同时保留其纵横比,显示图像的所有部分:

body > main > section > figure > a > img {
  height: 100%;
  width: 100%;
  object-fit: contain;
}

相关问题