不幸100vh
的是,它并不总是与100%
浏览器高度相同,如下例所示。
html,
body {
height: 100%;
}
body {
overflow: scroll;
}
.vh {
background-color: blue;
float: left;
height: 50vh;
width: 100px;
}
.pc {
background-color: green;
float: left;
height: 50%;
width: 100px;
}
<div class="vh"></div>
<div class="pc"></div>
这个问题在 iPhone 6+ 上更为明显,上部位置栏和下部导航栏在滚动时如何扩展和收缩,但不包括在100vh
.
高度的实际值100%
可以通过window.innerHeight
在JS中使用来获取。
有没有一种方便的方法来计算100vh
JS 中像素的当前转换?
我试图避免需要生成具有内联样式的虚拟元素来计算100vh
.
出于这个问题的目的,假设一个敌对的环境,其中max-width
或max-height
可能产生不正确的值,并且100vh
页面上的任何地方都不存在现有元素。基本上,假设任何可能出错的地方都存在,但本机浏览器功能除外,这些功能保证是干净的。
到目前为止,我想出的最好的是:
function vh() {
var div,
h;
div = document.createElement('div');
div.style.height = '100vh';
div.style.maxHeight = 'none';
div.style.boxSizing = 'content-box';
document.body.appendChild(div);
h = div.clientHeight;
document.body.removeChild(div);
return h;
}
但是计算 的当前值似乎太冗长了100vh
,我不确定它是否还有其他问题。