📏 vw/vh 适配方案、lib-flexible 和 postcss-pxr 的区别详解,以及响应式工具类封装指南
🧩 一、主流响应式方案对比
| 方案 |
原理 |
优点 |
缺点 |
| vw/vh |
使用视口单位(1vw = 1% viewport width) |
简单直观、无需 JS 计算 |
在横竖屏切换时可能会失真,某些设备兼容性差 |
| lib-flexible + rem |
动态设置 html 字体大小,使用 rem 单位布局 |
成熟稳定、适合设计稿还原度要求高的场景 |
需要 JS 脚本控制、对高分辨率适配有额外处理 |
postcss-pxr / postcss-pxtorem |
将 px 自动转换为 rem |
开发者体验好、可统一管理响应式规则 |
需配置 PostCSS 插件,依赖构建流程 |
🧠 二、深入解析三大方案
1️⃣ vw/vh 适配方案
✅ 原理:
1vw = 1% 的视口宽度
1vh = 1% 的视口高度
- 例如:在 750px 宽的设计稿中,
100px = (100 / 750) * 100vw = 13.333vw
💡 示例代码:
.container {
width: 750px;
}
@media screen and (max-width: 750px) {
html {
font-size: 100px !important;
}
}
.box {
width: 750px;
width: 100vw;
}
⚠️ 注意事项:
- 横竖屏切换时可能造成元素变形
calc()、transform 等复杂样式需特别处理
- 对于字体大小不推荐直接用
vw,会导致太小或太大
2️⃣ lib-flexible + rem 适配方案
✅ 原理:
- 动态设置
<html> 的 font-size
- 页面中的所有尺寸都使用
rem 单位
- 默认