【问题标题】:How to make a div's height proportional to its width? [closed]如何使div的高度与其宽度成正比? [关闭]
【发布时间】:2014-05-06 04:54:14
【问题描述】:

我设置了一个<div>,它可以根据浏览器窗口的宽度调整大小。如何使height 自动设置为与width 成比例匹配?换句话说,例如,我需要高度为宽度的 50%。我需要它在没有 JavaScript 的情况下工作。

【问题讨论】:

  • 你试过height=100%吗?,在jsFiddle上举个例子。
  • 您希望高度与宽度相同吗?或者您希望它按比例缩放?你的问题我不清楚。如果您将宽度设置为 100%,并且不设置高度,则它应该动态缩放。
  • 高度应该与高度成正比。 (宽 16,高 9)
  • 你可以看看这个答案:stackoverflow.com/a/20457076/1811992
  • 如果您设置了一些媒体查询,您可以这样做,但使用固定值。如果你想要 % 值,你需要使用 js

标签: html css layout


【解决方案1】:

您可以使用以下技巧:CSS 的一个怪癖是,当设置为百分比时,顶部和底部的填充/边距是根据父元素的 width 计算的,而不是它的高度。

所以,如果你想要一个方形 div,也就是说,它是其父元素宽度的 50%。要使其成为方形,您只需将其底部填充也设置为 50%。

问题是您必须根据 div 的宽度调整填充百分比。如果 div 的宽度设置为父级的 75%,例如,要获得一个正方形,您需要使用 75% 的底部填充。

div {
    background-color: #eee;
    width: 50%;
    height: 0;
    margin-bottom: 40px;
}
.square {
    padding-bottom: 50%; /* (50%*1) */
}
.landscape {
    padding-bottom: 37.5%; /* (50%*(3/4)) */
}
.portrait {
    padding-bottom: 66.6667%; /* (50%*(4/3)) */
}

这是一个概念验证小提琴:http://jsfiddle.net/teddyrised/Vsj33/

【讨论】:

  • 谢谢!这非常有效!我只需要height: 0px;padding-bottom: percentage%; 就可以了!
【解决方案2】:

如果您知道图像的比例,那么您可能能够为您的 div 保持相同的比例。

DEMO (调整窗口宽度)

这是如何工作的?

  1. 在框内插入一个浮动伪元素
  2. 将其设置为百分比值的垂直填充。这个 % 将采取 框宽作为参考。

因此,100% 的垂直填充会将框拉伸为正方形。如果里面的内容没有足够的空间,它会变长:)

【讨论】:

  • 这行得通,因为比率是固定的。
  • 非常适合您。享受:)
  • 好的。我有个问题。除了 :before 具有padding-top: percentage% 的伪类之外,我还需要其他什么来使其工作吗?我问是因为我只把它放进去,它没有用。我希望我不必使用花车。
  • 您可以使用 inline-block 代替或溢出:隐藏。伪的内联块示例:codepen.io/gc-nomade/pen/gzIfu 和 float 仅用于伪 codepen.io/gc-nomade/pen/uxeta
猜你喜欢
  • 2014-05-05
  • 2012-07-17
  • 1970-01-01
  • 2016-09-20
  • 1970-01-01
  • 2013-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多