.test {
width: 20%;
background: red;
aspect-ratio: 1/1;
}
<div class="test"></div>
aspect-ratio: 1/1;
除了 safari 之外,它在其他浏览器中都可以正常工作。但这段代码在 Safari 中不起作用。我使用的是 macOS 11.2。我现在已经更新到 macOS 11.5.2。据我所知它支持 safari,但我无法完全理解这个问题。从现在开始谢谢你。如果有遗漏的信息,请告诉我,我会补充。
你可以为此添加一个后备,这个填充黑客对我有用😉
.test {
aspect-ratio: 16/9;
// Fallback
@supports not (aspect-ratio: 16 / 9) {
&::before {
float: left;
padding-top: 56.25%;
content: "";
}
&::after {
display: block;
content: "";
clear: both;
}
}
}
其他长宽比:
padding-top: 100%
padding-top: 75%
padding-top: 66.67%
padding-top: 56.25%
编辑: 我发现这个工具对其他不同的纵横比有很大帮助 https://ratiobuddy.com/
aspect-ratio 作为 css 属性,但支持使用带有宽高比
@media: (aspect-ratio: 1/1)
的媒体查询:https://caniuse.com/?search=aspect-ratio
厚颜无耻的 SCSS mixin ..
@mixin aspect($width: 16, $height: 9) {
aspect-ratio: $width / $height;
@supports not (aspect-ratio: $width / $height) {
&::before {
content: '';
float: left;
padding-top: calc((#{$height} / #{$width}) * 100%);
}
&::after {
content: '';
display: block;
clear: both;
}
}
}
这对我有用:
.box {
width: 20vw;
height: calc(20vw * 1/1);
background-color: black;
}
<div class='box'></div>
宽度:20vw;
高度:计算(20vw * 1/1);
这是有关如何创建不同纵横比的快速示例:
1:1
高度:计算(宽度 * 1/1);
3:2
高度:计算(宽度 * 2/3);
4:3
高度:计算(宽度 * 3/4);
16:9
高度:计算(宽度 * 9/16);
嗯,我也遇到过同样的问题。 而且,这就是我修复它的方法: 将该元素包装在另一个元素中,并为 CSS 提供 aspect-ratio 属性,这对我有用。
不知何故, aspect-ratio 属性不适用于图像。奇怪