IOI*_*OIO 6 css aspect-ratio browser-bugs responsive-design responsive
这是最奇怪的事情,我以前曾多次使用过这种方法,但现在它似乎对我来说不起作用。
这是一个重复的问题,提供了此方法作为答案:
但由于某种未知的原因,它在 Firefox 和 Chrome 中对我来说是崩溃的。据我所知,它是根据我应用样式的元素的父元素计算填充...
在这种情况下,它不会查看.test,而是查看.parent计算填充:
.parent {
width: 200px;
}
.test {
width: 50px;
background: red;
padding-top: 100%;
}Run Code Online (Sandbox Code Playgroud)
<div class='parent'>
<div class='test'></div>
</div>Run Code Online (Sandbox Code Playgroud)
CSS 有一个属性可以解决这个问题
.square {
aspect-ratio: 1 / 1;
width: 100px;
background: grey;
padding: 10px;
color: white;
}Run Code Online (Sandbox Code Playgroud)
<div class="square">a sqaure</div>Run Code Online (Sandbox Code Playgroud)
更新:
还有另一种方法,如果您的支持绝对至关重要,并且您无法忍受 Firefox 不受支持,那么您就可以了。但它有点简陋。
div {
width: 5em;
height: 5em;
font-size: 3vw; background: grey; padding: 0.5em;}
/*em is relative to font-size so you could use that and vw is veiwport width where 100 is all of the veiwport. the size of the shape is now 5 * 3vh*/Run Code Online (Sandbox Code Playgroud)
<div>hello</div>Run Code Online (Sandbox Code Playgroud)
这实际上是正确的行为。您应该使子级的宽度为 100%,并与父级一起控制大小。
例子:
.parent {
width: 200px;
}
.child {
width: 100%;
background: red;
padding-top: 100%;
}Run Code Online (Sandbox Code Playgroud)
<div class="parent">
<div class="child"></div>
</div>Run Code Online (Sandbox Code Playgroud)
这是 CSS-Tricks 上提出的一个很好的方法,可以帮助您获得所需比例所需的正确填充:
纵横比 - 2:1
.parent {
width: 200px;
}
.child {
width: 100%;
background: red;
padding-top: calc(1 / 2 * 100%); // will give you an aspect ratio of 2:1
}Run Code Online (Sandbox Code Playgroud)
<div class="parent">
<div class="child"></div>
</div>Run Code Online (Sandbox Code Playgroud)
纵横比 - 3:1
.parent {
width: 200px;
}
.child {
width: 100%;
background: red;
padding-top: calc(1 / 3 * 100%); // will give you an aspect ratio of 3:1
}Run Code Online (Sandbox Code Playgroud)
<div class="parent">
<div class="child"></div>
</div>Run Code Online (Sandbox Code Playgroud)
纵横比 - 16:9
.parent {
width: 200px;
}
.child {
width: 100%;
background: red;
padding-top: calc(9 / 16 * 100%); // will give you an aspect ratio of 16:9
}Run Code Online (Sandbox Code Playgroud)
<div class="parent">
<div class="child"></div>
</div>Run Code Online (Sandbox Code Playgroud)
您可以在这里找到完整的文章: https ://css-tricks.com/aspect-ratio-boxes/