当前位置: 首页 > 面试题库 >

使用CSS保持div的长宽比

欧阳飞章
2023-03-14
问题内容

我想创建一个div可以随窗口宽度变化而改变其宽度/高度的。

是否有任何CSS3规则可以允许高度根据宽度而改变,同时保持其长宽比?

我知道我可以通过JavaScript来做到这一点,但我宁愿只使用CSS。


问题答案:

只需<div>使用百分比值创建包装器padding-bottom,如下所示:

div {
  width: 100%;
  padding-bottom: 75%;
  background: gold; /** <-- For the demo **/
}

/* demonstration purposed only : non-essential */
.demoWrapper {
  padding: 10px;
  background: white;
  box-sizing: border-box;
  resize: horizontal;
  border: 1px dashed;
  overflow: auto;
  max-width: 100%;
  height: calc(100vh - 16px);
}
<div class="demoWrapper">
  <div></div>
</div>

它将导致<div>高度等于其容器宽度的75%(长宽比为4:3)。

这取决于以下事实:

相对于生成的盒子的包含块的宽度计算百分比(来源:w3.org,强调我的)

其他长宽比和100%宽度的填充底部值:

aspect ratio  | padding-bottom value
--------------|----------------------
    16:9      |       56.25%
    4:3       |       75%
    3:2       |       66.66%
    8:5       |       62.5%

将内容放在div中:

为了保持div的长宽比并防止其内容拉伸,您需要添加一个绝对定位的子级,并使用以下方法将其拉伸到包装的边缘:

div.stretchy-wrapper {
  position: relative;
}

div.stretchy-wrapper > div {
  position: absolute;
  top: 0; bottom: 0; left: 0; right: 0;
}


 类似资料:
  • 问题内容: 我需要将元素的 宽度 保持为 高度 的百分比。因此,随着高度的变化,宽度也会更新。 通过为padding-top使用%值可以实现相反的效果,但以padding-left为百分比将是对象宽度的百分比,而不是其高度。 因此,使用这样的标记: 我想使用这样的东西: 为了确保根据盒子 的高度保持 盒子的 长宽比 。高度是可变的,因为它的百分比裕度-当窗口的高度改变时,盒子的高度也会改变。 我知

  • 问题内容: 我有一个可以放在一起的网站,它的固定长宽比大约等于风景,例如视频。 我想使它居中并扩展以填充可用的宽度和可用的高度,但不要在任何一侧变大。 例如: 高而薄的页面将使内容伸展整个宽度,同时保持成比例的高度。 短而宽的页面将使内容伸展到整个高度,并具有成比例的宽度。 我一直在研究两种方法: 使用具有正确长宽比的图像来扩展容器,但我无法在主要浏览器中以相同的方式表现该图像。 设置成比例的底部

  • 问题内容: 当我给图像一个宽度或高度的百分比时,它只会保持其宽高比增长/缩小,但是如果我想与另一个元素具有相同的效果,是否可以完全使用百分比将宽度和高度绑定在一起? 问题答案: 您可以使用纯CSS来完成;无需JavaScript。这利用了百分比(相对于包含块的 width)的(有点违反直觉)事实。这是一个例子:

  • 问题内容: 我所拥有的是HTML中的标准格式,该格式允许用户选择“宽度”选项和“高度”选项(每个值的范围从1到10)。当他们发送表单时,它将表单发送到PHP / HTML页面,PHP在其中获取“ Width”和“ Height”变量并将其分配给DIV的宽度和高度。 但是我想做的只是使用“ Width”和“ Height”变量来给该DIV分配一个长宽比,然后让该DIV自动调整为其内部容器的100%,

  • 给定一个具有设置宽度和高度的框,例如x。 当高度或宽度的边缘满足时,我们如何在该框内制作图像,展开、放大(并保持纵横比)以停止增长/放大。 这意味着您将始终看到该框中图像的整个高度和宽度。 请注意,框中并排包含几个img,因此当我们“滚动”这个“框”时,我们总是可以看到整个图像。 让我用三张图片来说明这一点(每个图片下面都有注释): 图像上方的第一张图像不填充高度或宽度,但它们保持长宽比。 第二,

  • 问题内容: 我尝试查看其他答案,但没有帮助。我的背景是动态的,因此图像的大小会改变,因此我需要保持宽高比,以便可以看到整个图像。这是我的CSS: } html 此刻取决于图像,有时很多图像被切除。我希望缩小图像以便可以完全看到。任何的想法? 问题答案: 使用覆盖整个元件,同时保持纵横比 如果要显示整个图像,同时保持宽高比,请改用: