前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
首页程序员面试题库CSS viewport units vw vh vmin vmax
CSS响应式设计

vw、vh、vmin、vmax 怎么算,手机上要防什么?

1vw 是视口宽度的百分之一,1vh 是视口高度的百分之一;vmin 取宽高较小值的百分之一,vmax 取较大值。移动浏览器地址栏会伸缩,传统 vh 与眼前可见区域可能不一致;全屏面板可根据需求选 svh、lvh 或 dvh,并测试软键盘和浏览器工具栏。

前端进阶之旅 · 一题精讲更新于 2026.09.29
CSS#响应式设计
先看核心答案读代码示例
理解线索

动态视口与小视口的取舍

  1. vw 与 vh分别以视口宽、高的百分之一作为长度基准
  2. vmin按视口两边较短者取值,适合简单图形比例
  3. svh 与 dvh小视口更保守;动态高度会随工具栏变化

100vh 在手机上可能按工具栏收起后的高度算,按钮却被当前展开的地址栏挡住;用 svh 或自然滚动时要按实际界面取舍。

核心回答

先记住这个答案

vw、vh 按视口尺寸取百分比,vmin、vmax 则分别按较短和较长的一边取值。手机地址栏伸缩会使传统 100vh 与当前可见高度不一致;小视口单位 svh 适合保守装入,动态单位 dvh 会跟着可见区域变化。全屏组件要看是否允许自然滚动,不能一概锁成固定高度。

  • vw 与 vh 分别看宽高
  • vmin 取较短边
  • svh 采用保守可见高度
  • dvh 可能随工具栏变化

手机全屏面板被工具栏遮挡

弹窗写 height: 100vh,在手机上底部按钮被地址栏挡住。问题不是按钮的 z-index,而是使用的视口高度与当前可见区域不同。若要始终装在较小可见区域里,可以考虑 100svh;若要随动态工具栏变化调整,可用 100dvh,但滚动时尺寸变化可能引起跳动。正文类内容通常更适合自然高度加最小高度,而非强制锁死。

全屏面板采用小视口高度CSS
.panel {
  min-height: 100vh; /* 旧环境的基础值 */
  min-height: 100svh; /* 小视口高度,减少被工具栏遮挡 */
}
.square { width: 20vmin; height: 20vmin; }
/* 较短的视口边决定正方形尺寸 */

视口百分比单位每一份对应相应轴长度的 1%。 vmin 和 vmax 也只负责取边长,不会替元素处理内容溢出。示例的 .square 用 20vmin 可以随窗口保持大致比例,但如果里头放文字,极窄屏仍可能装不下。给插画或几何图形使用它们较直观;带操作按钮的内容面板要以可读性、可滚动性为先,再考虑是否用视口单位限制尺寸。

动态视口与小视口的取舍

vmin 和 vmax 可用于与视口形状相关的图形尺寸,但不保证在极端屏幕上仍可读。新单位区分小视口、大视口和动态视口:小视口保守、大视口按工具栏收起后的空间、动态视口随可见区域变化。实际移动浏览器还涉及布局视口、可视视口和键盘策略,因此全屏交互要在目标设备上核对。

一个底部固定操作栏若按 100dvh 布局,地址栏收起时高度会增长,用户滚动中可能看到面板跳动;改用 100svh 则更稳,但收起工具栏后可能留下空白。长正文通常用 min-height 并允许自然滚动,避免按钮被内容挤出或被键盘覆盖。选单位时应观察目标浏览器的地址栏和软键盘,而不是只在桌面模拟一个静态高度。

回答前,多想一步

容易答错的地方

说 100vh 总等于当前可见屏幕
移动浏览器工具栏变化时,两者可能不一致。
把 dvh 当作无代价替换
它可能随工具栏显示隐藏变化,固定界面中的尺寸跳动需测试。
试着用自己的话回答

面试官还会怎么问?

vmin 在竖屏时基于哪条边?

取视口宽高较小者;常见竖屏中通常是宽度,但不应写死。

svh 与 lvh 分别代表什么?

分别基于小视口和大视口高度,适合保守装入与占满最大空间等不同需求。

全屏页面一定用 height: 100dvh 吗?

不一定。内容可能超出视口,常用 min-height 配合自然滚动更安全。

从一道题,走向一组知识

把知识连起来

响应式设计

为什么字号只用 vw 会影响可访问性?

vw 进入字号公式时要设上下限并检查用户文字放大。

响应式设计

writing-mode 改变方向后,间距属性该怎么写?

writing-mode 改变文字轴向,但 vw 与 vh 仍分别对应物理视口宽高。

参考资料

  • CSS:响应式设计参考资料

示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。

本题目录
  1. 先记住这个答案
  2. 手机全屏面板被工具栏遮挡
  3. 动态视口与小视口的取舍
  4. 容易答错的地方
  5. 面试官还会怎么问
  6. 把知识连起来
读懂,再试着讲出来

先看核心答案,再读代码。最后展开追问,检查自己有没有遗漏边界。

试着回答追问
浏览全部面试题理解原理,也关注真实的使用场景。回到顶部 ↑