CSS aspect-ratio属性对于定义元素框所需的宽高比非常有用。这个属性很有用,当父容器或视口的大小发生变化时,浏览器会重新调整元素的尺寸,以保持宽高比。
在计算中很有用自动尺寸和其他布局功能。
盒子的最小尺寸应该是自动的,以便看到宽高比的效果。当宽度和高度都不是自动大小时,提供的宽高比不起作用。
属性值
宽高比属性可以具有以下值之一:
auto:替换的元素(如 <img>)使用固有的宽高比。
<ratio>:Box 的首选宽高比-ratio 是宽度/高度的比率。当高度和前面的斜线符号未指定时,默认为 1。它基于 box-sizing 指定的框的尺寸工作。
适用范围
除行内框和内部 ruby 或表格框之外的所有 html 元素。
语法
aspect-ratio = auto || <ratio>
<ratio> 是与宽度/高度比率相关的数字,例如9/4.
CSS aspect-ratio: 回退到自然纵横比
以下示例演示了图像以其自然纵横比加载以及如何声明回退选项。
<html>
<head>
<style>
img {
display: block;
width: 200px;
border: 3px dotted blue;
background-color: lightgreen;
margin-bottom: 5px;
aspect-ratio: 5/2 auto;
}
</style>
</head>
<body>
<p>with "5/2" aspect-ratio</p>
<img src="" />
<p>with "auto" aspect-ratio</p>
<img src="/css/images/red-flower.jpg" />
</body>
</html>
在上面的示例中,第一个 <img> 没有指定 src,并且以宽高比 = 5/2 显示;而第二个 <img> 已指定 src,并且以其自然的纵横比显示。 auto 是给定的后备选项。
CSS aspect-ratio: 纵横比
以下示例演示了使用固定宽度和高度的不同纵横比值作为 auto。
<html>
<head>
<style>
#container {
display: inline-block;
width: 100px;
height: auto;
border: 2px solid blue;
background-color: yellow;
margin-right: 10px;
}
.sample1{
aspect-ratio: 5/2;
}
.sample2{
aspect-ratio: 0.5;
}
.sample3{
aspect-ratio: 2;
}
.sample4 {
aspect-ratio: 18/9;
}
</style>
</head>
<body>
<div id="container" class="sample1">aspect-ratio: 5/2</div>
<div id="container" class="sample2">aspect-ratio: 0.5</div>
<div id="container" class="sample3">aspect-ratio: 2</div>
<div id="container" class="sample4">aspect-ratio: 18/9</div>
</body>
</html>