有时我会创建一个正方形(或任何矩形),使用类似于这种方法的方法使其在任何大小下都保持其比例。
我的目标:
- 防止正方形在高度较小的设备上超出视口,例如横向移动的手机
提议的解决方案:
- 使用
max-width: 90vh
将正方形的宽度限制为视口高度的百分比 - 期望比例得到尊重
CSS
.square {
position: relative;
height: 0;
padding-bottom: 100%;
overflow: hidden;
}
.square-inner {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
.mw { max-width: 90vh;} /* solution, but makes things break */
HTML
<div class="square mw">
<div class="square-inner"></div>
</div>
应该发生什么:
- 在高度较小的视口中,正方形的最大宽度应为视口高度的90%
实际发生的情况:
- 当视口高度小于正方形的宽度时:
- 宽度受
vh
值限制 - 高度从正方形的宽度计算而来,如果没有被限制为
vh
- 我们得到一个纵向长方形
- 宽度受
规范指出,相对值是从“包含块”计算的,这似乎应该是容器的当前宽度。
浏览器行为:
- Chrome 29.0.1547.65:如描述
- Firefox 23.01:如描述
Opera:完全不尊重vh未经验证的Opera 16+
我是否错误地解释了规范,还是浏览器供应商实现的可能存在错误?