100vw/100vh仅占满视口,受滚动条、iOS地址栏动态变化、缩放及父容器限制影响易出现溢出或留白;推荐用min-height: 100vh; min-height: 100dvh;兼容处理,必要时辅以JS动态设置height。
用 width: 100vw; hei 确实能让元素视觉上“铺满整个屏幕”,但要注意它只是占满视口(viewport),不是真正意义上的“铺满屏”——比如滚动条、缩放、移动端 Safari 地址栏隐藏/显示、iframe 嵌套等场景下,实际表现可能和预期不一致。更稳妥的方案是结合语义、响应式逻辑与少量 JS 辅助。
ght: 100vh;
常见原因:
100vh 不会自动重算,造成底部留白或遮挡;overflow: hidden 或 transform,可能裁剪子元素,即使它写了 100vh。优先使用以下组合,兼容性好且无需 JS:
height: 100%; 继承即可;min-height: 100vh 替代 height:min-height: 100dvh;(推荐)可适配移动端动态视口;dvh 单位(dynamic viewport height):当必须严格贴合物理屏幕(如全屏背景图、游戏画布、WebGL 容器),可监听 resize 并更新高度:
立即学习“前端免费学习笔记(深入)”;
100dvh + min-height 已足够。一个兼顾兼容性与现代特性的全屏容器:
.fullscreen {这样既 fallback 到传统 vh,又在支持的浏览器中启用动态视口,同时用 min-height 防止内容不足时塌陷。