news 2026/6/9 1:39:48

CSS中的 `dvh` 与 `vh`: 深入理解视口单位

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CSS中的 `dvh` 与 `vh`: 深入理解视口单位

在现代 Web 开发中,视口单位(如vh,vw,vmin,vmax)被广泛用于响应式设计。然而,随着移动设备的发展,尤其是那些带有虚拟键盘的设备,传统的vh单位有时并不能提供理想的用户体验。本文将深入探讨vhdvh(Dynamic Viewport Height),帮助你更好地选择适合你的项目的单位。

1. 视口单位简介

1.1vh- Viewport Height

vh是视口高度单位,表示相对于视口高度的百分比。例如,100vh表示整个视口的高度。

.full-height{height:100vh;/* 元素高度等于视口高度 */}

1.2vw- Viewport Width

类似地,vw是视口宽度单位,表示相对于视口宽度的百分比。

.full-width{width:100vw;/* 元素宽度等于视口宽度 */}

1.3vminvmax

  • vmin:取视口宽高较小值的百分比。
  • vmax:取视口宽高较大值的百分比。

2.vh的局限性

尽管vh在桌面浏览器上表现良好,但在移动设备上,尤其是当虚拟键盘弹出时,它可能会导致一些问题。

2.1 虚拟键盘的影响

在移动设备上,当用户点击输入框时,虚拟键盘会弹出,这会导致视口高度的变化。如果使用vh来设置元素高度,可能会出现以下情况:

  • 当键盘弹出时,页面内容可能被部分遮挡。
  • 页面布局可能会变得混乱,用户体验下降。

示例:

<divclass="footer">Footer content</div>
.footer{position:fixed;bottom:0;height:10vh;/* 固定高度为视口高度的10% */background-color:lightblue;}

在这种情况下,当虚拟键盘弹出时,10vh可能不再代表原来的10%,而是更小的值,导致底部的footer高度变小甚至消失。

3.dvh- Dynamic Viewport Height

为了应对上述问题,CSS 引入了dvh(Dynamic Viewport Height)。dvh是一种新的单位,旨在解决视口高度变化的问题。

3.1dvh的工作原理

dvh动态调整其值以适应当前可用的视口高度。当虚拟键盘弹出时,dvh会自动调整,确保页面内容不会被遮挡。

示例:

.footer{position:fixed;bottom:0;height:10dvh;/* 使用 dvh 替代 vh */background-color:lightblue;}

在这个例子中,当虚拟键盘弹出时,10dvh仍然保持相对稳定的值,避免了页面布局的混乱。

4. 如何选择vh还是dvh

4.1 使用场景

  • vh:适用于不需要考虑虚拟键盘影响的场景,比如桌面端应用或简单的移动端页面。
  • dvh:适用于需要处理虚拟键盘弹出的复杂移动端页面,尤其是表单较多的页面。

4.2 浏览器支持

截至 2023 年底,dvh已经得到了大部分现代浏览器的支持,但为了兼容性,建议在实际项目中进行测试,并提供回退方案。

/* 提供回退方案 */.footer{height:10vh;/* 默认使用 vh */height:10dvh;/* 如果支持 dvh 则使用 dvh */}

5. 结论

vhdvh都是非常有用的 CSS 单位,但在不同的场景下有不同的表现。了解它们的区别并根据具体需求选择合适的单位,可以帮助我们创建更加流畅和友好的用户体验。

希望这篇博客对你有所帮助!如果你有任何疑问或建议,请随时留言交流。


扩展阅读

  • MDN 文档 - Viewport units
  • Can I Use - dvh
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 2:08:38

SpringBoot 高效处理图片压缩包:上传、解压与存储实战指南

&#x1f449; 这是一个或许对你有用的社群 &#x1f431; 一对一交流/面试小册/简历优化/求职解惑&#xff0c;欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料&#xff1a; 《项目实战&#xff08;视频&#xff09;》&#xff1a;从书中学&#xff0c;往事…

作者头像 李华
网站建设 2026/6/9 1:35:33

基于memos和agentscope的ai工具和记忆调用助手

https://www.bilibili.com/video/BV1gvFLzyEEk/?spm_id_from333.1387.homepage.video_card.click memos 写入记忆读取记忆的skill-CSDN博客 请输入您的查询&#xff08;输入 exit 退出&#xff09;:请输入您的查询: 查找一下我喜欢什么AI回复&#xff1a; 信息: 已启用MemOS…

作者头像 李华
网站建设 2026/6/8 9:43:36

从崩溃到重生:解决 Anaconda 环境下 Poetry 安装的一系列“大坑”

目录 从崩溃到重生&#xff1a;解决 Anaconda 环境下 Poetry 安装的一系列“大坑” 前言 一、 核心痛点&#xff1a;为什么你的 Poetry 总装不上&#xff1f; 二、 最终制胜方案&#xff1a;隔离环境 镜像强制安装 1. 另起炉灶&#xff1a;避开损坏的 Base 环境 2. 暴力…

作者头像 李华
网站建设 2026/6/8 4:37:14

Thinkphp和Laravel框架的校园二手书籍交易平台的设计实现

目录 ThinkPHP与Laravel框架的校园二手书籍交易平台设计实现平台架构设计核心功能实现性能优化策略部署与扩展性 开发技术源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; ThinkPHP与Laravel框架的校园二手书籍交易平台设计实现 平台架…

作者头像 李华
网站建设 2026/5/22 19:50:50

Thinkphp和Laravel框架的校园共享厨房预约美食菜谱系统

目录 ThinkPHP与Laravel框架的校园共享厨房预约美食菜谱系统摘要系统概述功能模块技术实现特色与优势应用场景 开发技术源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; ThinkPHP与Laravel框架的校园共享厨房预约美食菜谱系统摘要 系统…

作者头像 李华
网站建设 2026/5/31 4:15:52

Thinkphp和Laravel框架的物流车辆货车配送路线信息管理系统

目录 ThinkPHP与Laravel框架的物流车辆配送路线管理系统摘要系统目标技术框架对比核心功能模块数据库设计安全与扩展性适用场景 开发技术源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; ThinkPHP与Laravel框架的物流车辆配送路线管理系…

作者头像 李华