css - 根据高度保持div纵横比

标签 css responsive-design aspect-ratio

我需要将元素的宽度 保持为其高度 的百分比。因此,随着高度的变化,宽度也会更新。

通过使用 padding-top 的 % 值可以实现相反的效果,但 padding-left 的百分比将是对象宽度的百分比,而不是对象的高度。

所以使用这样的标记:

<div class="box">
  <div class="inner"></div>
</div>

我想使用这样的东西:

.box {
    position: absolute;
    margin-top: 50%;
    bottom: 0;
}
.inner {
    padding-left: 200%;
}

确保盒子的纵横比根据它的高度保持不变。高度是可变的,因为它是 % margin - 随着窗口高度的变化,盒子的高度也会随之变化。

我知道如何使用 JavaScript 实现这一点,只是想知道是否有一个干净的纯 CSS 解决方案?

最佳答案

您可以使用具有所需比例的图像来帮助按比例调整大小(可以通过将一个维度设置为某个值而将另一个维度设置为自动来按比例缩放图像)。图片不一定要可见,但必须占据空间。

.box {
  position: absolute;
  bottom: 0;
  left: 0;
  height: 50%;
}
.size-helper {
  display: block;
  width: auto;
  height: 100%;
}
.inner {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  background: rgba(255, 255, 153, .8);
}
<div class="box">
  <img class="size-helper" src="//dummyimage.com/200x100/999/000" width="200" height="100">
  <div class="inner">
    1. box has fluid height<br>
    2. img has 2:1 aspect ratio, 100% height, auto width, static position<br>
    2.1 it thus maintains width = 200% of height<br>
    2.2 it defines the dimensions of the box<br>
    3. inner expands as much as box
  </div>
</div>

在上面的例子中,box、inner 和 helper 的大小都是一样的。

关于css - 根据高度保持div纵横比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26559542/

相关文章:

html - 省略号在搜索文本位于其下方时突出显示

android - Bootstrap 选项卡在较小的设备中重叠

css - 响应式表格格式

jquery - 未应用最大高度响应

cocos2d-x - 适用于cocos2dx游戏的iPhone X/三星Galaxy S8长宽比问题

Android html5 输入类型 ="password"和数字键盘

java - MenuItem Focused Label JavaFX 上的 CSS 样式

css - 像素边框和百分比宽度比例

jquery - 16 :9 aspect ratio with fixed width

css - Flexbox,方形 div 的响应式网格保持纵横比