news 2026/8/29 10:56:07

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/8/26 19:37:15

Si83402BAA-IF,具有低导通电阻的2通道隔离智能开关

型号介绍今天我要向大家介绍的是 skyworks 的智能隔离开关——Si83402BAA-IF。该器件具有低导通电阻 (RON)&#xff0c;能够在提供高连续电流的同时&#xff0c;对感性负载进行无限量的消磁。采用紧凑的 DFN 封装&#xff0c;并集成了安全等级的隔离功能。其逻辑接口为两个低功…

作者头像 李华
网站建设 2026/8/26 11:20:47

基于springboot的电动车租赁平台系统-计算机毕业设计源码+LW无文档

基于SpringBoot的电动车租赁平台系统 摘要&#xff1a;本文详细阐述了基于SpringBoot的电动车租赁平台系统的研究背景意义、需求分析以及功能设计。随着共享经济的兴起和人们出行需求的多样化&#xff0c;电动车租赁市场具有广阔的发展前景。本系统旨在解决传统电动车租赁模式中…

作者头像 李华
网站建设 2026/8/28 16:00:54

RAGFlow工程师必看:微服务架构设计与企业级部署实践

文章详细介绍了RAGFlow开源RAG引擎的技术特点与架构设计&#xff0c;重点解析了其微服务架构、DeepDoc文档解析能力和Agent工作流机制。涵盖了生产环境资源规划、Docker容器化部署、异步任务流转、Elasticsearch索引优化等工程实践&#xff0c;为开发者构建企业级RAG系统提供了…

作者头像 李华
网站建设 2026/8/29 6:26:34

大模型训练全流程解析:从“书呆子“到“智能体“的蜕变之路

文章通过"培养天才学生"的比喻&#xff0c;将大模型训练分为四个阶段&#xff1a;预训练(构建基础知识)、后训练与对齐(培养情商和价值观)、推理增强(发展深度逻辑能力)、智能体与工具(学习使用外部资源)。每个阶段都有其特定的技术和目标&#xff0c;最终使大模型从…

作者头像 李华
网站建设 2026/8/28 17:53:57

Thinkphp和Laravel框架的校园点歌系统的设计与实现

目录摘要技术选型对比开发技术源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;摘要 校园点歌系统是一种基于Web的应用程序&#xff0c;旨在为学生和教职工提供便捷的点歌服务&#xff0c;丰富校园文化生活。系统采用ThinkPHP或Laravel框…

作者头像 李华