Jquery 在移动设备上滚动时,视口高度会快速闪烁

Jquery 在移动设备上滚动时,视口高度会快速闪烁,jquery,css,responsive-design,viewport,Jquery,Css,Responsive Design,Viewport,所以我在我的网站上使用了很多vh,在移动浏览器中,当你向下滚动页面时,浏览器的地址栏就会消失,当你向后滚动时,地址栏就会重新出现(比如chrome) 我的问题是,当这种情况发生时,由于地址栏在文档高度上的差异,页面中的所有内容都会调整大小 是否有任何解决方法,例如首先使用jQuery计算当前设备的vh,然后将所有内容转换为px而不是vh 或任何其他建议 谢谢几天前,我与这个完全相同的问题进行了斗争,我提出的解决方案是这样的: $(window).on('load', function() {

所以我在我的网站上使用了很多vh,在移动浏览器中,当你向下滚动页面时,浏览器的地址栏就会消失,当你向后滚动时,地址栏就会重新出现(比如chrome)

我的问题是,当这种情况发生时,由于地址栏在文档高度上的差异,页面中的所有内容都会调整大小

是否有任何解决方法,例如首先使用jQuery计算当前设备的vh,然后将所有内容转换为px而不是vh

或任何其他建议


谢谢

几天前,我与这个完全相同的问题进行了斗争,我提出的解决方案是这样的:

$(window).on('load', function() {
   var $vhElement = $("#vhElement");   //Your element with 100vh
   var height = $vhElement.height();   //Get rendered height in px
   $vhElement.css("height", height + "px");  //Override vh height with px height
});
如果有多个元素需要这样做,则可以对所有元素应用一个类并使用以下命令

 $(window).on('load', function() {
   var $vhElements = $(".vhElement");   //Your elements using vh
   $vhElements.each(function() {
       var height = $(this).height();   //Get rendered height in px
       $(this).css("height", height + "px");  //Override vh height with px height
   });
});

所以我必须为我页面中的每个元素写这个?这并不是一种全局方法:(可能是一个或两个元素,但不幸的是,我的页面上有很多使用vh的元素。如果你能负担得起在所有使用vh的元素上放置一个类的话,我添加了一个可以与类一起工作的元素。这不是一个真正的最佳解决方案,但我想它现在可以工作了,谢谢