【问题标题】:Container padding image aspect ratio容器填充图像纵横比
【发布时间】:2016-11-25 18:29:36
【问题描述】:

我正在尝试做一个常见的技巧,但我显然做错了什么,因为我没有得到想要的结果。我正在尝试使用图像的纵横比填充容器,因此它应该使容器与图像的高度相同。

我在网上看到要获得图像的比例,你必须这样做:

height / width * 100

HTML

<div class="box">
  <img src="..." width="100" height="150" />
</div>

CSS

.box {
  padding-bottom: 150%;
  position: relative;
  background: red;
  width: 100px;
}

.box img {
  position: absolute;
  max-width: 100%;
  opacity: 0.8;
  height: auto;
  width: 100%;
  left: 0;
  top: 0;
}

Here's a fiddle 显示我做了什么。

有人知道我在这里做错了什么吗?

【问题讨论】:

  • padding-bottom: 150%; - 150% 什么?
  • @connexo 150% (1.5) 是计算出的纵横比。
  • 是的,但是在内部渲染时,浏览器必须找出 150% 是多少像素。那么它应该计算什么150%? % 显然是 relative 大小,那么 150% 与什么有关?
  • 如果我在问之前知道这一点,我一开始就不会问。

标签: html css aspect-ratio


【解决方案1】:

您的盒子需要一个容器,因为 padding-bottom:150% 是父元素的 150%:

.container {
  width: 100%;
  max-width: 100px;
}

.box {
  padding-bottom: 150%;
  position: relative;
  background: red;
  width: 100%;
}

.box img {
  position: absolute;
  max-width: 100%;
  opacity: 0.8;
  height: auto;
  width: 100%;
  left: 0;
  top: 0;
}
<div class="container">
  <div class="box">
    <img src="https://placeholdit.imgix.net/~text?txtsize=20&txt=100%C3%97150&w=100&h=150" />
  </div>
</div>

【讨论】:

  • 如果容器也没有定义的height,则添加容器会完全什么都没有。
  • @connexo,您在我的代码中看到定义的高度了吗?您是否看到底部的巨大红色位,就像在操作小提琴中一样?不?所以它确实改变了一些东西
  • 我很困惑这是如何在这里工作的,因为我在 JSFiddle 上尝试过它并没有任何区别。如果你有多行盒子会发生什么?见这里:jsfiddle.net/h0k4kwxy/2
  • "padding-bottom:150%; 是父元素的 150%。" 而父元素的高度取决于内容的高度,而内容的高度显然受填充影响,所以这是定义循环依赖。
  • @connexo 停止尝试在解决方案中寻找漏洞。如果您有更好的解决方案,那么您为什么不回答。这个答案适用于将框保持在图像的纵横比上,这是 OP 试图做的。如果它有效,它是否是循环的并不重要。对于高级前端开发,您真的不太了解您的 css,这是一种有据可查的响应式容器技术,请阅读 css-tricks.com/snippets/sass/maintain-aspect-ratio-mixin 并停止打扰我
猜你喜欢
  • 1970-01-01
  • 2016-03-21
  • 2021-12-13
  • 1970-01-01
  • 1970-01-01
  • 2015-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多