您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# CSS中vw与vh的区别有哪些
## 引言
在现代响应式网页设计中,CSS单位`vw`(视窗宽度单位)和`vh`(视窗高度单位)已成为开发者实现自适应布局的重要工具。本文将从定义、计算方式、应用场景等维度深入分析二者的差异,并通过代码示例帮助读者理解其实际应用。
---
## 一、基础概念解析
### 1. vw(Viewport Width)
- **定义**:1vw等于**当前视窗宽度的1%**
- **计算公式**:`1vw = 1% × 视窗宽度`
- **示例**:在1920px宽的屏幕上,`50vw = 960px`
### 2. vh(Viewport Height)
- **定义**:1vh等于**当前视窗高度的1%**
- **计算公式**:`1vh = 1% × 视窗高度`
- **示例**:在1080px高的屏幕上,`100vh = 1080px`
---
## 二、核心差异对比
| 特性 | vw | vh |
|-------------|-----------------------------|-----------------------------|
| **基准维度** | 基于视窗宽度 | 基于视窗高度 |
| **动态响应** | 随浏览器宽度变化 | 随浏览器高度变化 |
| **常见用途** | 水平布局、字体大小适配 | 全屏布局、垂直居中 |
| **极端情况** | 横屏时可能过度拉伸 | 移动端URL栏影响精确度 |
---
## 三、关键区别详解
### 1. 计算基准不同
- **vw**始终以视口宽度为基准,适合构建与屏幕宽度相关的比例布局:
```css
.container {
width: 80vw; /* 始终占视窗宽度的80% */
}
.hero-section {
height: 100vh; /* 撑满整个可视高度 */
}
vw
单位会实时响应,而vh
保持不变vh
单位动态变化,vw
不受影响100vh
可能包含地址栏高度(iOS Safari存在此问题),需使用dvh
(Dynamic Viewport Height)解决vw
的表现更可预测
h1 {
font-size: calc(16px + 1vw); /* 基础字号+视窗宽度比例 */
}
.col-3 {
width: calc(25vw - 20px); /* 四列布局考虑间距 */
}
.fullscreen {
height: 100vh;
position: relative;
}
.centered {
top: 50vh;
transform: translateY(-50%);
}
.banner {
width: 80vw;
aspect-ratio: 16/9; /* 保持16:9比例 */
max-height: 90vh;
}
/* 使用CSS变量+JavaScript动态计算 */
:root {
--app-height: 100vh;
}
.element {
height: var(--app-height);
}
.responsive-box {
width: min(80vw, 1200px); /* 限制最大宽度 */
}
vmin
:取vw
和vh
中的较小值vmax
:取vw
和vh
中的较大值dvh
/lvh
/svh
:CSS新规范针对移动端的动态视口单位特性 | vw/vh | % |
---|---|---|
参照物 | 视窗尺寸 | 父元素尺寸 |
继承性 | 不依赖DOM层级 | 依赖父元素计算 |
动态响应 | 直接响应视窗变化 | 需父元素尺寸变化触发 |
理解vw
和vh
的本质差异,能帮助开发者更精准地控制元素尺寸与视窗的关系。建议在实际项目中:
1. 优先使用vw
处理水平布局
2. 谨慎使用vh
处理移动端垂直布局
3. 结合媒体查询和CSS函数实现完美适配
通过灵活运用这些视窗单位,可以构建出真正自适应的现代网页界面。 “`
注:本文实际约1200字,可通过扩展代码示例或增加浏览器兼容性等内容进一步补充。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。