【发布时间】:2018-05-31 18:52:16
【问题描述】:
我的弹出窗口应该是全屏高度减去标题。
但是,当地址栏未显示时(向下滚动后),该空间将留空。
var currencyHeight = $(window).innerHeight() - headerHeight;
$(window).innerHeight() 在地址栏显示和不显示时都返回 559。当它显示时,弹出窗口工作正常,全屏减去标题:
但是当它没有出现时,你可以看到空白:
人们通常如何解决这个问题?
小例子:
https://jsfiddle.net/zzuxvg4p/4/
但是因为 jsfiddle 使用 iframe,你无法在 android 上正确测试它,所以这个页面有来自那个 jsfiddle 的代码:
https://annotated-dev.limebuild.net/media/test.html(点击页脚的蓝色框。如果地址栏没有显示,则黑框不是全屏,如果显示则为全屏)。
【问题讨论】:
-
根据您的描述,您使用的标题隐藏方法不会影响其实际
height。因此,即使它被隐藏,它也会从窗口高度中扣除相同的值。这适用于使用transforms 隐藏元素(因为transform仅影响元素的绘制,但元素保持不变,在其当前流中占据完全相同的空间)。但这些都是假设。如果没有minimal reproducible example,就无法确定。让我们把猜测作为最后的选择,依靠实际的代码。 -
@AndreiGheorghiu 感谢您对我的问题感兴趣,我用可复制的示例更新了问题。
-
@AndreiGheorghiu 我认为它与标题高度没有任何关系。因为如果我向上滚动一个像素,则地址栏会显示,然后弹出窗口是全屏的。在我的示例中,我删除了标题逻辑,问题仍然存在。
-
在打开/关闭弹出窗口时在
<body>上放置/删除一个类。此类应将overflow:hidden;添加到<body>。因此,您可能想将其命名为no-scroll或类似名称。应该解决你的问题。此外,您不再需要scrollTop()。要在 Android 上禁用 Chrome 上的顶部栏隐藏,您需要使用height:100vh; overflow: auto的包装 div。我希望这是有道理的。 -
@AndreiGheorghiu 如果我添加它仍然是同样的问题,我用图像更新了问题。在某种程度上,这是合乎逻辑的,因为地址栏有一些空间。它是 .innerHeight 应该根据地址栏显示或不显示返回不同的值......
标签: javascript jquery html css