使用padding实现
这个方法的原理是,padding和margin的百分比值无论是水平方向还是垂直方向都是相对于宽度计算的。
利用这个原理,可以通过设置padding-top / padding-bottom的百分比值,获得固定宽高比例的元素。
固定宽高的元素是画出来了,但是具体使用的时候还要往里面添加子元素,需要让子元素绝对定位,占满空间。
使用的例子如下
<style>
.wrap {
width: 200px;
}
.box {
background-color: orange;
padding-top: 50%;
position: relative;
}
.content {
position: absolute;
left: 0;
top: 0;
}
</style>
<div class="wrap">
<div class="box">
<div class="content">文字文字文字文字文字文字文字</div>
</div>
</div>
aspect-ratio: width / height
这是css的一个新属性,给容器规定了一个宽高比。
指定宽高中的一个值,另一个是auto就可以自动计算。如果同时指定了宽高值,那么按照指定的值渲染。
另外。这个属性不能在行内元素和table布局里使用。
<style>
.box {
background-color: orange;
aspect-ratio: 1 / 2;
}
</style>
<div id="box" class="box">
文字文字
</div>
这个属性的兼容性不太好,很多浏览器都没有实现,下图是实现的浏览器,可以参考一下