CSS 视口单位:CSS *vh(dvh、lvh、svh)和 *vw 单位

CSS 视口单位对于创建适应不同屏幕尺寸的响应式布局至关重要。这些单位测量相对于视口高度和宽度的尺寸,使开发人员能够设计灵活且适应性强的 Web 界面。本指南将介绍传统的“vh”和“vw”单位,并介绍“dvh”、“lvh”和“svh”等较新的单位,解释它们如何增强响应能力并更有效地处理视口变化。
1.CSS 中的视口单位是什么?
视口单位是相对单位,可根据浏览器视口的大小动态调整。最常用的是:
这些单位可以轻松设计随浏览器窗口大小缩放的元素。例如:
div { width: 50vw; /* 50% of the viewport width */ height: 100vh; /* 100% of the viewport height */ background-color: lightblue; }
在这个例子中,“div”跨越了视口的一半宽度和整个高度。
2. 传统 vh 和 vw 的局限性
虽然 `vh` 和 `vw` 在大多数情况下都能很好地工作,但它们没有考虑到视口中的某些动态变化,例如:
这些限制可能导致设计看起来不一致或导致意外的布局问题,尤其是在移动设备上。
3. 新的视口单位:dvh、lvh 和 svh
为了解决这些问题,CSS 引入了三个新单位:“dvh”(动态视口高度)、“lvh”(大视口高度)和“svh”(小视口高度)。
动态视口高度(dvh)
“dvh” 会根据视口的变化(例如浏览器 UI 元素的出现或消失)进行动态调整。它代表当前视口高度的 1%,确保您的布局实时适应。
例子:
div { height: 100dvh; /* Adjusts dynamically to visible viewport height */ background-color: lightgreen; }
这确保了即使浏览器 UI 发生变化,`div` 也始终适合可见区域。
大视口高度(lvh)
`lvh` 代表最大可能视口高度的 1%,忽略动态 UI 变化(如移动地址栏)。
例子:
div { height: 100lvh; /* Fixed to the maximum viewport height */ background-color: lightcoral; }
这对于需要保持一致性的布局很有用,无论浏览器 UI 如何变化。
小视口高度 (svh)
`svh` 代表最小可能视口高度的 1%,适用于浏览器 UI 占据屏幕很大一部分的情况。
例子:
div { height: 100svh; /* Adjusts to the smallest viewport height */ background-color: lightgoldenrodyellow; }
在处理诸如键盘弹出窗口之类的 UI 元素可以缩小可见区域的设备时,此单元特别有用。
4.视口宽度(vw)
“vw” 测量视口宽度的 1%。它保持一致,不受滚动或 UI 外观等动态变化的影响。
例子:
div { width: 100vw; /* Full viewport width */ background-color: lightpink; }
这对于水平布局或全宽设计来说是理想的。
5.实际用例
这些单位在现实场景中的应用方式如下:
响应式英雄部分
.hero { height: 100dvh; /* Ensures the hero fits the visible viewport */ width: 100vw; background: url('hero.jpg') no-repeat center center/cover; }
即使移动地址栏隐藏或出现,这也能确保英雄部分始终适合屏幕。
全页模态框
.modal { height: 100svh; /* Accounts for the smallest viewport height */ width: 100vw; overflow-y: auto; /* Allows scrolling if needed */ background-color: white; }
使用“svh”可确保即使屏幕键盘降低了视口高度,模式仍然可用。
粘性页脚
footer { height: 10lvh; /* Fixed to the largest viewport height for consistency */ width: 100vw; background-color: darkgray; }
粘性页脚可在各种设备上保持其大小。
6. 组合单元,实现最大灵活性
您可以混合搭配这些单元,以获得更具适应性的设计。例如:
.container { min-height: 100svh; /* Ensures usability on smallest viewport */ height: 100dvh; /* Fills visible area dynamically */ max-height: 100lvh; /* Prevents exceeding the largest viewport height */ }
这种方法可确保设计适应所有可能的视口场景。
7.浏览器支持
虽然 `vh` 和 `vw` 已得到各大浏览器的广泛支持,但 `dvh`、`lvh` 和 `svh` 是较新的支持。请确保检查浏览器兼容性并为旧版浏览器提供后备方案。
后备示例:
.container { height: 100vh; /* Fallback for older browsers */ height: 100dvh; /* Preferred for modern browsers */ }
8. 结论
CSS 视口单位(例如“vh”、“vw”、“dvh”、“lvh”和“svh”)是创建响应式和适应性强的网页设计的强大工具。虽然“vh”和“vw”可以处理大多数情况,但较新的“dvh”、“lvh”和“svh”单位可以解决局限性,尤其是在移动设备上。通过了解和利用这些单位,**移动应用开发者**可以制作适用于所有设备和场景的无缝、用户友好的设计。