如何在Android的Chrome浏览器中获取JavaScript中地址栏的高度(在左图中用红色矩形标记)?我需要知道,因为它在向下滚动时消失,我需要对此做出React,因为视口高度是不同的。
的数据
我已经想出了一个解决方案:
1.获取初始状态下的视口高度:var height = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
1.当地址栏消失时获取视口高度
1.计算两个值之间的差异
问题是你必须在第二个状态才能知道。
5条答案
按热度按时间hvvq6cgz1#
更新-动态单位
不是直接解决浏览器栏高度,而是解决适应新尺寸的问题。
您可以使用动态视口单位-
dvh
动态视口百分比单位(dv*)是相对于动态视口大小定义的:视口的大小动态考虑了任何动态扩展和收缩的UA接口。这允许作者调整内容的大小,以便它可以完全适合视口,无论这些接口是否存在。(来源)
原始答案- JavaScript
因为
100vh will be larger than the visible height when the URL bar is shown
根据this你可以通过创建一个宽度为0,高度为100 vh的元素来计算URL栏的高度。
然后使用JavaScript将
window.innerHeight
与该元素的高度进行比较。型
9nvpjoqh2#
你正在寻找的东西是url bar resizing .由于Android的Chrome v56,它的建议由大卫Bokan使用vh单位在移动的.有一个演示在那篇文章,点击链接以获得更多信息以及如何在移动的使用它.
当用户向下滚动页面时,会抛出一个window.resize事件。您可以通过事件侦听器捕获此事件来更新页面。
更多信息:mobile chrome fires resize event on scroll
2wnc66cl3#
对我来说,最好的方法就是这样:
字符串
d7v8vwbk4#
今天也遇到了同样的问题,事实证明没有简单的方法可以直接计算出url栏的高度。据我所知,JavaScript中没有一个可直接访问的变量可以告诉你“100vh”的大小到底是多少。
在移动的浏览器上,100 vh可能包括也可能不包括url栏的高度,这让我们处于一个棘手的境地,如果我们想在加载过程中将div的大小调整到浏览器可见内容区域的精确高度。
我想出了一个变通办法,虽然这对我来说很整洁,这就是我所做的:
1.在html根元素上添加一个大小为100vh的伪属性。在我的例子中,我使用了“perspective”属性,这对我很有效
1.然后你可以用下面的代码得到地址栏的大小:
字符串
nkoocmlb5#
我有一个包含动态内容的容器,它必须始终至少具有viewport的全高(如果内容不适合屏幕,则可以滚动)。
因此,如果你需要一个固定的高度,只需在我的解决方案中将“min-height”替换为“height”。
我就是这么处理的。
字符串
它适用于android的地址栏和safari的地址栏(safari移动的也有顶部和底部的地址栏)。
然后,为了使过渡平滑,你可以应用一个css规则:
型