实现CSS全屏布局需用100vh/100vw、绝对/固定定位或Flex/Grid结合min-height:100vh,注意移动端vh跳变、父容器定位上下文及滚动控制。
要实现 CSS 全屏布局,核心是让容器占据整个视口(viewport)区域,同时确保内容不溢出、不滚动(除非主动设置),并适配不同设备。关键不在于“多炫酷”,而在于准确控制尺寸、定位和层级关系。
最直接的方式是用 100vh(视口高度)和 100vw(视口宽度):
height: 100vh; width: 100vw; —— 精确匹配当前屏幕可视区域100vh 在移动端 Safari 中可能因地址栏显隐导致高度跳变,可配合 min-height: 100vh 或 JS 动态修正height: 100%,它依赖父元素高度,若祖先未设高,会失效适用于模态框、遮罩层、全屏背景等需要脱离文档流的场景:
position: absolute; top: 0; left: 0; right: 0; bottom: 0;
position: relative 或其它非 static 定位,否则会相对于视口定位position: fixed,效果相同但脱离滚动上下文现代布局方案中,用 Flex 或 Grid 更利于内容居中与响应式控制:
display: flex; min-height: 100vh;,再用 justify-content 和 align-items 居中子元素display: grid; min-height: 100vh;,搭配 place-items: center 快速居中min-height: 100vh 而非 height,防止内容超长时被截断全屏 ≠ 禁止滚动,需按需控制:
overflow: hidden 加在全屏容器上(慎用,影响可访问性)overflow-y: auto,并确保内边距(padding)合理,避免内容贴边
OS Safari 对 vh 的兼容性,可用 env(safe-area-inset-bottom) 配合处理刘海屏底部留白