【问题标题】:CSS Center crop image under min widthCSS Center 在最小宽度下裁剪图像
【发布时间】:2021-09-08 16:14:15
【问题描述】:

我正在尝试在某个断点上实现全宽/全高的页面横幅,并且在该断点下方开始缩小宽度以保持其高度。我使用min-width 规则在某种程度上实现了这一点,但是在断点下方,它仅从图像的右侧裁剪。由于我通常覆盖居中或左对齐的文本,因此图像的焦点通常位于中心/右侧。是否有任何我不知道的 css 规则定义了裁剪发生在最小宽度以下的位置,而不是它总是从右侧起飞?谢谢

编辑-这里是一些示例代码

<div class="banner-container full-width ">
  <img class="background-image" src="/some-image.png">
  <div class="banner-text full">some text</div>
</div>

这里是相关的css

.banner-container {
  overflow: hidden;
  min-height: 275px;
}
.background-image {
  min-width: 755px;
  height: 100%;
  width: 100%;
}

我使用 img 元素而不是将图像设置为横幅容器的背景,因为我希望容器采用图像的高度。如果我可以使用背景图片来做到这一点,那可能就是要走的路

【问题讨论】:

标签: html css


【解决方案1】:

仅使用“.banner-container”来控制图像容器的宽度。然后对图像本身使用以下内容:

.banner-container {
  width: 50%
}
.background-image {
  width: 100%;
  height: auto;
}

【讨论】:

    【解决方案2】:

    您可以执行以下操作:

    .banner-container {
      overflow: hidden;
      min-height: 275px;
      position: relative;
    }
    .background-image {
      min-width: 755px;
      height: 100%;
      width: 100%;
      position: absolute;
      left: 50%;
      transform: translateX(-50%);
    }
    

    这将使图像水平居中,首先将其向右移动容器的一半(使用left: 50%;,然后将其向左移动自身宽度的一半(transform: translateX(-50%);)。

    要使其垂直居中,您还可以添加top: 50%,而不是translateX(-50%),使用translate(-50%, -50%)

    【讨论】:

    • 这非常接近,但是它会水平拉伸图像,因为它采用最小高度,而不是图像的高度超过最小宽度时
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 2020-03-04
    • 1970-01-01
    • 2012-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多