CSS中如何保持容器宽高比不变的原理

html-css041

CSS中如何保持容器宽高比不变的原理,第1张

padding-top 和 padding-bottom 属性分别表示容器的上内边距与下内边距。

虽然设置的是垂直方向的高度,有意思的是当该值为一个百分比的时候表示的是和本身包含的元素的宽度有关。

换句话就是说, padding-top 和 padding-bottom 的值为百分比时,其实表示的是其元素宽度的百分比。

因此,在容器宽度不确定的情况下(如: 80% , flex: 1 等),保持容器宽高比不变,可以通过设置元素的 padding-top 或 padding-bottom 值。

例如,保持宽高比为16:9:

这个在保持图片的宽高比时非常有用。

css设置div宽高按照10/1显示,无论这个div的宽怎么变化,div的高都会是宽的十分之一,这就是 aspect-ratio 的作用,例如下面这个例子

假如说div的内容已经高于div显示的高度,那么div会根据内容的高度来显示,也就是说最小高度是宽度的十分之一,最高的就是按照内容的高度走

假如说就想跟着比例走,即使内容超出比例的高度,那该怎么做呢?很简单,加上 min-height:0 就可以了,这样就可以让高度不根据内容计算了,而是固定的数值

如果我们同时设置width和height,则aspect-ratio就不起作用了,就完全按照width和height设置的值显示

假如我们设置了最大的宽度时300px,因为是块状元素,宽度是展开一行的,并且高度是按照比例走的,那么高度就是30px

假如我们在标签上用width或者height属性, aspect-ratio 的优先级也是低的,例如:

最后结果还是按照标签属性上的width和height显示宽高,而不是 aspect-ratio 设置的1/1比例

综上所述, aspect-ratio 的优先级是最低的,不过确实好用