CSS - aspect-ratio 属性



CSS aspect-ratio 属性在定义元素框的所需宽高比时很有用。当父容器或视口的大小发生变化时,此属性非常有用,浏览器将重新调整元素的尺寸,以保持宽高比。

它在计算自动尺寸和其他布局功能时很有用。

盒子的最小一个尺寸应该是自动的,以便看到 aspect-ratio 的效果。当宽度和高度都不是自动大小时,如果 aspect-ratio 不起作用。

可能的值

aspect-ratio 属性可以具有以下值之一:

  • auto:替换的元素(如 <img> 使用固有的纵横比。
  • <ratio>:盒子的首选纵横比是宽/高之比。如果未指定 height 和前面的斜杠符号,则默认为 1。它的工作原理是根据 box-sizinging 指定的箱子的尺寸。

适用于

除内联框和内部 ruby 或表格框之外的所有 html 元素。

语法


 aspect-ratio = auto || <ratio>

<ratio>是与宽/高比率相关的数字,例如 9/4。

CSS aspect-ratio - 回退到自然 aspect-ratio

以下示例演示了使用其自然 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="images/red-flower.jpg" />
</body>
</html>

在上面的示例中,第一个 <img> 没有指定 src,并且以 aspect-ratio = 5/2 显示;而第二个 <img> 指定了 src,并且以其自然的纵横比显示。auto 是给定的回退选项。

CSS aspect-ratio - 使用固定宽度的 aspect-ratio

以下示例演示了将固定宽度和高度设置为自动的不同 aspect-ratio 值。


<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>