CSS - aspect-ratio:在Safari浏览器中不工作

pprl5pva  于 2023-06-07  发布在  其他
关注(0)|答案(4)|浏览(602)
.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,但我不能完全理解这个问题。从现在开始谢谢你。如果有任何遗漏的信息,我会补充它,如果你让我知道。

5vf7fwbs

5vf7fwbs1#

你可以添加一个后备,这个填充黑客为我工作😉

.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;
    }
  }
}

其他长宽比:

  • 1:1纵横比= 1 / 1 = 1 = padding-top: 100%
  • 4:3纵横比= 3 / 4 = 0.75 = padding-top: 75%
  • 3:2纵横比= 2 / 3 = 0.66666 = padding-top: 66.67%
  • 16:9纵横比= 9 / 16 = 0.5625 = padding-top: 56.25%
    **编辑:**我发现这个工具,它帮助我很多其他不同的纵横比https://ratiobuddy.com/
qzwqbdag

qzwqbdag2#

Safari 15之前的Safari中不支持aspect-ratio作为css属性,但支持使用aspect-ratio @media: (aspect-ratio: 1/1)的媒体查询:https://caniuse.com/?search=aspect-ratio

uoifb46i

uoifb46i3#

Cheeky 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;
        }
    }
}
holgip5t

holgip5t4#

以下是适合我的方法:

.box {
  width: 20vw;
  height: calc(20vw * 1/1);
  background-color: black;
}
<div class='box'></div>

1.设置您选择的“宽度”。在本例中,我们将宽度设置为“20 vw”
宽度:20 vw;
1.然后,我们将通过“height”属性创建“aspect-ratio”,通过“calc”将“width”乘以所需的“aspect-ratio”。在本例中,我们将纵横比设置为“1/1”
高度:计算(20 vw * 1/1);
下面是一个关于如何创建不同纵横比的快速示例:
一比一
height:calc(width * 1/1);
三比二
height:calc(width * 3);
四比三
height:calc(width * 3/4);
16:9
height:calc(width * 9/16);

相关问题