登录
首页 >  文章 >  前端

移动端浏览器 100vh 高度为何超出视窗?

时间:2024-11-13 13:09:50 206浏览 收藏

文章不知道大家是否熟悉?今天我将给大家介绍《移动端浏览器 100vh 高度为何超出视窗? 》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

移动端浏览器 100vh 高度为何超出视窗?

移动端浏览器高度与地址工具栏的神秘关系

移动端浏览器中,地址栏、工具栏和主视区的错综复杂关系,给开发者带来不少疑惑。尤其是当使用 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 高度为何超出视窗? 》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>