场景
开发中等宽列表开发经常会使用flex进行宽度的自适应。但为了在大屏时不至于只变化宽度,UI提出需要列表每一项宽高自适应。
解决思路
这么简单的需求,肯定不考虑使用js来监听宽度拉伸设置高度,成本太高,所以优先考虑如何从css入手。
1.是否有属性直接设置宽高比?
2.是否有哪些属性是根据宽度而变化的?
解答方案
- 是否有属性直接设置宽高比?
答案是有的,这个属性是:aspect-ratio,MDN对于这个属性的解释是:
aspect-ratio CSS 属性为box容器规定了一个期待的纵横比,这个纵横比可以用来计算自动尺寸以及为其他布局函数服务。
我们可以直接使用这个属性设置每个item中的宽高比,用法:
// aspect-ratio: 设计图的宽高比例
aspect-ratio: 16 / 9
但这个属性是个新特性,在IE中并不支持,需要考虑其兼容性,所以不推荐。
下面是其兼容性截图: