【发布时间】:2013-09-06 13:08:04
【问题描述】:
有时我会使用类似于this method 的方法创建一个正方形(或任何矩形,实际上),它会在任何大小下尊重其比率。
我想要什么:
- 防止正方形在高度较小的设备上超出视口 即横屏手机
建议的解决方案
- 使用
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%
实际发生的情况:
- 当 viewport 高度小于正方形宽度时:
- 宽度受限于
vh值 - 高度是根据正方形的宽度计算的
- 我们得到一个垂直长的矩形
- 宽度受限于
The spec 表示相对值是从“包含块”计算出来的,在我看来,它应该是容器的当前宽度。
浏览器行为:
- Chrome 29.0.1547.65:如上所述
- Firefox 23.01:如上所述
-
Opera:根本不尊重 vh未在 Opera 16+ 上验证
我对规范的解释有误,还是浏览器供应商在实施过程中可能存在错误?
【问题讨论】:
-
请在问题中发布实际代码(最好是SSCCEE)。问题不应依赖于外部资源才能清晰/可回答。
标签: css viewport-units