目录
一、绝对单位 vs 相对单位
绝对单位(如px)固定不变,而相对单位则基于其他参考值动态计算,更适合响应式设计:
/* 绝对单位示例 */
.fixed-size {
width: 300px; /* 始终为300像素 */
}
/* 相对单位示例 */
.responsive-size {
width: 50vw; /* 视口宽度的一半 */
}
二、核心相对单位详解
1. em 单位
计算方式:相对于当前元素的字体大小
特点:具有继承性,层级嵌套时会产生复合效果
.parent { font-size: 16px; } .child { font-size: 1.5em; /* 16px × 1.5 = 24px */ padding: 2em; /* 24px × 2 = 48px */ }
2. rem 单位(Root em)
计算方式:相对于根元素(html)的字体大小
特点:避免嵌套影响,更易控制全局比例
html { font-size: 62.5%; /* 1rem = 10px (基于16px默认大小) */ } .container { font-size: 1.6rem; /* 16px */ margin: 2rem; /* 20px */ }
3. vh 与 vw 单位
vh:1% 的视口高度
vw:1% 的视口宽度
特点:直接响应视口尺寸变化
.hero-banner { height: 100vh; /* 满屏高度 */ width: 80vw; /* 视口宽度的80% */ }
4. vmin 与 vmax 单位
vmin:取 vh/vw 中的较小值
vmax:取 vh/vw 中的较大值
/* 在移动端横屏时特别有用 */ .responsive-square { width: 50vmin; /* 总保持较小尺寸的50% */ height: 50vmin; /* 形成完美正方形 */ }
三、实战应用场景对比
单位 适用场景 注意事项 rem 字体大小、间距 设置 html{font-size:62.5%}
简化计算em 与特定文本相关的内边距/外边距 注意多层嵌套的复合效果 vw/vh 全屏布局、横幅 移动端100vh可能包含地址栏高度 % 基于父元素的尺寸 父元素必须有明确尺寸定义
四、响应式单位组合实战
/* 响应式排版系统 */
html {
font-size: 16px;
/* 小屏幕调整 */
@media (max-width: 768px) {
font-size: 14px;
}
}
h1 {
font-size: calc(1.5rem + 2vw); /* 基础大小+视口自适应 */
}
/* 完美居中容器 */
.container {
width: min(90vw, 1200px); /* 响应式宽度限制 */
margin: 0 auto;
}
/* 移动端适配 */
@media (orientation: portrait) {
.sidebar {
height: 50vmax; /* 竖屏时使用较大尺寸 */
}
}
五、专家建议与最佳实践
字体系统:优先使用rem为主、em为辅
布局系统:主框架使用vw/vh,内部元素用%
移动端适配:使用
dvh
(dynamic viewport height)解决地址栏问题安全计算:结合
min()
、max()
和clamp()
函数/* 安全响应式文本 */ .title { font-size: clamp(1.5rem, 4vw, 3rem); } /* 移动端高度修正 */ .mobile-section { height: 100dvh; /* 动态视口高度 */ }
关键提示:CSS4将引入新的容器查询单位(如cqw/cqh),可实现基于组件自身的响应式设计!
六、总结
掌握CSS相对单位是构建现代响应式网站的必备技能:
使用rem构建可预测的缩放系统
em适合局部相对控制
vw/vh创建视口相关布局
vmin/vmax处理复杂方向变化
组合使用并配合现代CSS函数实现精细控制