Skip to content
On this page

巧用 aspect-ratio 设置宽高比

aspect-ratio 是一个为容器 设置期待的纵横比的 CSS 属性(该属性旨在为计算自动尺寸)。自动尺寸你可以理解为容器的默认渲染的宽高,如果是可替换元素,则就是内容元素的实际宽高。

aspect-ratio 支持 设置 <ratio> 也可以是 auto

从 chrome88+ 这一属性正式被实现。

已知容器的 纵横比 16(width):9(height), 其中 width: 300px, 求得在该比值下的 height。

css
div {
    width: 300px;
    aspect-ratio: 16 / 9;
}

这个 div 默认渲染的高度是 0, 但是由于我们设置了纵横比,根据纵横比的值 16 / 9 = 300 / x。 那么 x 就很好求出来了。

x = 300 / 16 / 9 , 所以 x 的实际渲染像素(也就是 div 容器的实际渲染的height)是 168.75px

如果省略高和前面的斜杠字符,则高默认为 1。

css
div {
    width: 300px;
    aspect-ratio: 1.5/* 1.5 = 1.5 / 1 */
}

现在 就很容易求得 height = 300 / 1.5 / 1, height 的实际渲染高度为 200px.

如果 div 的宽高都不设置

css
div {
    aspect-ratio: 1.5;
}

div 由于默认是块级容器,块级容器的一大特性就是宽度默认是父级容器的宽度, 具有流的特性。 假如在一个 1680 宽的屏幕。

则渲染出来的高 1680 / x = 1.5 / 1, x = 1680 / 1.5 = 1120px

以上就是 aspect-ratio 的计算规则。

aspect-ratio 可以使得自动去计算容器的尺寸。需要注意的是如果同时对容器设置 widthheight 则该属性设置无效,只有当设置其中一个才会生效。