aspect-ratio

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

aspect-ratio CSS 媒体特性可用于测试视口宽高比

语法

aspect-ratio 特性被指定为 <ratio> 值,表示视口的宽/高比。它是一个范围特性,这意味着你也可以使用带前缀的 min-aspect-ratiomax-aspect-ratio 变体来分别查询最小值和最大值。

示例

在下面的示例中,一个 <div> 元素包含在一个 <iframe> 中。iframe 会创建自己的视口。调整 <iframe> 的大小以查看 aspect-ratio 的实际效果。

请注意,当没有媒体查询条件为真时,背景将变为白色,因为以下规则都不会应用于 <iframe> 内的 <div>。看看你是否能找到触发这种情况的宽度和高度值!

HTML

html
<iframe id="outer">
  <div id="inner">
    Watch this element as you resize iframe viewport's width and height.
  </div>
</iframe>

CSS

css
/* Minimum allowed aspect ratio */
/* Select aspect ratios 8/5 = 1.6 and above */
@media (min-aspect-ratio: 8/5) {
  div {
    background: #9999ff; /* blue */
  }
}

/* Maximum allowed aspect ratio */
/* Select aspect ratios 3/2 = 1.5 and below */
@media (max-aspect-ratio: 3/2) {
  div {
    background: #99ff99; /* green */
  }
}

/* Exact aspect ratio, put it at the bottom to avoid override */
@media (aspect-ratio: 1/1) {
  div {
    background: #ff9999; /* red */
  }
}

结果

请注意,min-aspect-ratio: 8/5下限设置为 1.6,因此此媒体查询选择宽高比为 1.6 及以上的元素。max-aspect-ratio: 3/2 设置上限,因此此媒体查询选择宽高比为 1.5 及以下的元素。aspect-ratio: 1/1 会覆盖最大宽高比规则,因为它在后面声明,并选择宽高比恰好为 1 的元素。

从初始状态开始,当您减小高度时,宽高比从一开始增加。因此 div 的背景颜色从红色(1)< 绿色(1.5)< 白色 < 蓝色(1.6)变化。

规范

规范
媒体查询第 4 级
# aspect-ratio

浏览器兼容性

另见