
移动端浏览器高度与地址工具栏的神秘关系
移动端浏览器中,地址栏、工具栏和主视区的错综复杂关系,给开发者带来不少疑惑。尤其是当使用 100vh 作为高度时,主视区的高度会超出视窗,露出地址栏和工具栏。
问题解析
这是因为 100vh 表示视窗高度,包括地址栏和工具栏。而有些移动端浏览器,当页面内容可滚动时,会自动隐藏地址栏和工具栏。因此,一开始不可滚动时,主视区实际高度为视窗高度减去地址栏和工具栏高度。而当滚动时,隐藏地址栏和工具栏,主视区高度就变为视窗高度。
解决方案
为了控制这种关系,可以采用以下方法:
使用 dhv(设备高度)和 svh(安全区域高度)
这些单位是基于设备物理屏幕高度,不受地址栏和工具栏影响。例如:
body { height: 100dvh;}
记住主视区高度并重新赋值
在页面加载时,获取主视区高度(可用 window.innerHeight 获得),然后动态赋值给主视区,如下所示:
function adjustViewport() { const height = window.innerHeight; const container = document.querySelector(".container"); container.style.height = `${height}px`;}adjustViewport();window.addEventListener("resize", adjustViewport);
实现不可滚动效果
如果需要实现不可滚动效果,可以将 body 高度设置为屏高,并将 overflow-y 设置为 hidden,如下所示:
body { height: 100vh; overflow-y: hidden;}
以上就是移动端浏览器 100vh 高度为何超出视窗?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1559391.html
微信扫一扫
支付宝扫一扫