固定位置,100%高度元素,在移动设备上并非总是100%

时间:2013-12-24 23:29:03

标签: android jquery html css

我想要一个40px,100%高度的元素固定在我的响应式网站的左侧,显然我需要它始终是100%并且它在桌面浏览器上运行良好。

当我使用移动浏览器(nexus 7,Chrome)时会出现问题。将手指按在屏幕上,100%的高度似乎会下降约10%,直到你放开并且元素再次变为100%。

滚动时会出现一个网址栏,然后会消失,我相信它会偏移100%的高度。

所以问题似乎是Chrome的网址栏,可能还有其他移动浏览器网址栏以同样的方式运作,我该如何解决这个问题?

这是CSS:

div#dummyMenu{
width:40px; 
position:fixed; 
top:0; 
bottom:0; 
left:0; 
background-color:#444;
} 

我甚至投入了一些 jQuery 来加倍确定但仍然存在同样的问题:

jQuery(document).on("scroll",function(){
    var documentHeight = jQuery(document).height();
    jQuery('#dummyMenu').css('height',documentHeight);
});

3 个答案:

答案 0 :(得分:4)

更改

var documentHeight = $(document).height();

var documentHeight = $(window).innerHeight();

window.innerHeight()从网络浏览器(bars)返回窗口的高度,而不是viewport等。

但是,由于滚动条干扰,我认为您应该尝试使用$(window).height

另外,请确保在HTML的开头包含<!DOCTYPE html>

我也认为问题可能是您说jQuery而不是$

答案 1 :(得分:1)

移动浏览器不支持固定位置,因此您将被迫使用相对或绝对值。

请查看本文here以了解更多内容......

答案 2 :(得分:0)

我在网站包装器之后移动了我的元素并将其设为position:absolute;而不是固定。

不太确定为什么修复它但它确实......

div#dummyMenu{
width:40px; 
position:absolute; 
left:0; 
background-color:#444; 
z-index:100; 
height:100%;
}

我还在评论部分的帮助下添加了一些jQuery。

jQuery(document).ready(function($){
    $(window).on("load",function(){ 
        var windowHeight = $(document).height();
        $('#dummyMenu').css('height',windowHeight + 'px');
    });
});

jQuery(document).ready(function($){
    $(window).scroll(function(){
        var windowHeight = $(document).height();
        $('#dummyMenu').css('height',windowHeight + 'px');
    });
});