VW 转 PX 转换器
专为中国开发者打造的移动端适配神器。支持750设计稿转换、微信小程序rpx、uni-app多端适配、PostCSS自动化配置。
10vw × 1920px ÷ 100 = 192.0px
浏览器视口的宽度(像素),常见值:1920、1440、1366、375
三步快速掌握 VW 转 PX
从蓝湖标注到代码实现,只需三步。适用于Vue3移动端、微信小程序、uni-app跨端项目。
选择设计稿基准
750px (蓝湖/即时设计标准)、375px (iPhone标准)、1920px (PC端)。微信小程序默认750rpx = 屏幕宽度。
输入VW值或设计稿PX
从蓝湖复制的像素值可直接换算。支持小数点精确计算,确保UI还原度100%。
复制代码直接使用
一键复制CSS代码。配合PostCSS自动转换,或在Vue3/uni-app中直接使用。
📱 微信小程序rpx与vw完美互转
小程序开发必备技能:rpx、vw、px三种单位的转换关系。基于750rpx设计稿标准。
rpx转换原理
750rpx = 屏幕宽度 = 100vw
微信小程序规定屏幕宽度固定为750rpx,所有设备自动适配
WXML小程序实战代码
微信开发者工具中的rpx会自动转换,无需手动计算
/* 小程序样式 - 基于750rpx设计稿 */
.container {
width: 750rpx; /* 全屏宽度 */
padding: 30rpx; /* = 4vw */
font-size: 28rpx; /* = 3.73vw */
}
.button {
width: 200rpx; /* = 26.67vw */
height: 80rpx; /* = 10.67vw */
border-radius: 40rpx; /* = 5.33vw */
}
/* 在iPhone 6上:
750rpx = 375px (屏幕宽度)
1rpx = 0.5px */💡 小程序开发建议
- •从蓝湖/即时设计获取的750px设计稿标注,可直接改为rpx使用
- •字体大小建议范围:24rpx-32rpx (16px-21px 实际显示)
- •1px物理边框问题:使用 1rpx 在所有设备上都显示为物理1px
🎨 750px设计稿一键适配方案
蓝湖/即时设计/Figma标注的750px设计稿,如何完美转换为vw实现100% UI还原
快速转换公式
vw = (设计稿px ÷ 750) × 100
750px设计稿标准公式
示例计算:
• 设计稿 100px → (100÷750)×100 = 13.33vw
• 设计稿 375px → (375÷750)×100 = 50vw
• 设计稿 30px → (30÷750)×100 = 4vw
🎯 设计师协作技巧
让设计师提供750px宽度的设计稿,开发时可以快速心算:100px约等于13.3vw,200px约等于26.7vw
SCSS750设计稿转换函数
创建SCSS函数,蓝湖标注值直接转vw,提升开发效率
// 基于750px设计稿的vw转换函数
@function vw($px) {
@return ($px / 750) * 100vw;
}
// 使用示例 - 蓝湖标注值直接填入
.header {
width: vw(750); // 100vw 全屏
height: vw(88); // 11.73vw 导航栏
padding: 0 vw(30); // 左右各4vw
font-size: vw(28); // 3.73vw 标题
}
.card {
width: vw(345); // 46vw 卡片宽度
margin: vw(15); // 2vw 间距
border-radius: vw(16); // 2.13vw 圆角
}
// 编译后:
// .card { width: 46vw; margin: 2vw; }🔧蓝湖/即时设计协作流程
① 设计师交付
在蓝湖上传750px宽度设计稿
② 开发标注
复制标注的px值,用公式或工具转vw
③ 代码实现
CSS中使用vw单位,实现完美适配
🚀 Vue3 + Vant移动端完美适配
Vue3组合式API + Vant UI + vw单位,打造丝滑的移动端体验
Vue3响应式布局组件
使用vw单位构建弹性布局,自动适配所有移动设备
<template>
<div class="home-page">
<van-nav-bar title="首页" class="nav-bar" />
<div class="banner">
<van-swipe :autoplay="3000">
<van-swipe-item v-for="item in banners">
<img :src="item.image" class="banner-img" />
</van-swipe-item>
</van-swipe>
</div>
<div class="product-grid">
<van-card v-for="product in products"
:title="product.name"
:price="product.price"
class="product-card" />
</div>
</div>
</template>
<style scoped lang="scss">
// 基于750px设计稿
.nav-bar {
height: 11.73vw; // 88px
font-size: 4.8vw; // 36px
}
.banner {
height: 50vw; // 375px
margin: 4vw; // 30px
border-radius: 2.67vw; // 20px
}
.product-grid {
padding: 4vw; // 30px
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 2.67vw; // 20px
}
.product-card {
border-radius: 2.13vw; // 16px
padding: 2.67vw; // 20px
}
</style>📦Vant组件自定义主题
// vant.config.js
export default {
// 基于750px设计稿的Vant主题
van-nav-bar-height: '11.73vw',
van-button-default-height: '10.67vw',
van-button-default-font-size: '3.73vw',
van-card-padding: '2.67vw',
van-cell-font-size: '3.73vw',
van-field-input-text-size: '3.73vw'
};⚡思源黑体响应式设置
/* 中文字体优化 */
body {
font-family: 'Source Han Sans CN',
'PingFang SC',
'Microsoft YaHei', sans-serif;
font-size: clamp(14px, 3.73vw, 18px);
line-height: 1.6;
letter-spacing: 0.02em;
}
h1 {
font-size: clamp(20px, 5.33vw, 28px);
font-weight: 500; /* 思源黑体推荐 */
line-height: 1.4;
}
.paragraph {
font-size: clamp(14px, 3.73vw, 16px);
text-align: justify; /* 中文两端对齐 */
}💡 Vue3移动端最佳实践
- • 使用
clamp()限制字体大小范围 - • Vant组件通过CSS变量统一设置vw单位
- • 图片使用
max-width: 100%防止溢出 - • 思源黑体在移动端字重建议400-500,不建议700
⚡ PostCSS自动化px转vw配置
使用postcss-px-to-viewport,写px代码自动转vw,大幅提升开发效率
ViteVite项目配置
// vite.config.js
import postcsspxtoviewport from 'postcss-px-to-viewport';
export default {
css: {
postcss: {
plugins: [
postcsspxtoviewport({
viewportWidth: 750, // 设计稿宽度
unitPrecision: 5, // 精确到5位小数
viewportUnit: 'vw', // 转换单位
selectorBlackList: ['.ignore', '.van'],
// 忽略Vant组件库
minPixelValue: 1, // 小于1px不转换
mediaQuery: false, // 媒体查询不转换
exclude: [/node_modules/] // 排除第三方
})
]
}
}
}WebpackWebpack项目配置
// vue.config.js 或 webpack.config.js
module.exports = {
css: {
loaderOptions: {
postcss: {
plugins: [
require('postcss-px-to-viewport')({
viewportWidth: 750,
unitPrecision: 5,
viewportUnit: 'vw',
selectorBlackList: [
'.van', // Vant UI
'.el', // Element UI
'.ignore' // 自定义忽略类
],
propList: ['*'], // 所有属性都转换
exclude: [
/node_modules/vant/, // 排除Vant
]
})
]
}
}
}
}✅ 使用前后对比
开发时编写:
width: 345px; margin: 15px;编译后输出:
width: 46vw; margin: 2vw;🛡️ 忽略转换技巧
如果某个px值不想被转换,有3种方法:
1. 大写PX: border: 1PX solid
2. 注释忽略: width: 100px; /*no*/
3. 类名黑名单: .ignore { width: 100px }
🔧 uni-app/Taro多端适配统一方案
一套代码,同时适配微信小程序、H5、App、支付宝小程序等多个平台
uni-app单位换算关系
uni-app规范: 750rpx = 屏幕宽度
与微信小程序保持一致,跨平台编译时自动转换
H5平台编译:
rpx → vw (自动)小程序平台:
rpx → rpx (保持不变)App平台:
rpx → 动态计算pxuni-app跨端样式写法
<template>
<view class="container">
<view class="header">首页</view>
<view class="content">
<!-- 统一使用rpx,自动跨端适配 -->
</view>
</view>
</template>
<style lang="scss">
// 所有平台统一使用rpx
.container {
width: 750rpx; // H5→100vw 小程序→750rpx
padding: 30rpx; // 自动适配
}
.header {
height: 88rpx; // 导航栏
font-size: 32rpx; // 标题
line-height: 88rpx;
}
.content {
padding: 30rpx;
font-size: 28rpx; // 正文
}
/* 条件编译 - 不同平台差异化处理 */
/* #ifdef H5 */
.header {
position: fixed; // H5固定导航
top: 0;
}
/* #endif */
/* #ifdef MP-WEIXIN */
.header {
padding-top: 44rpx; // 微信小程序状态栏
}
/* #endif */
</style>💡uni-app/Taro多端适配最佳实践
✅ 推荐做法
- • 统一使用rpx单位,让框架自动转换
- • 750rpx设计稿标注直接对应rpx值
- • 使用条件编译处理平台差异
- • 字体大小范围: 24rpx-32rpx
⚠️ 避免踩坑
- • 不要混用rpx和vw,会导致平台差异
- • 不要用px做响应式,只用于固定尺寸
- • H5端默认会转vw,无需手动配置
- • 安全区域适配使用uni提供的API
📐 阿里/腾讯/字节移动端适配方案
学习大厂移动端适配最佳实践,vw、rem、flexible方案全面解析
淘宝flexible方案
核心思路:
动态设置根元素font-size,配合rem单位实现适配
document.documentElement.style.fontSize = (clientWidth / 10) + 'px'现状:
已不推荐使用,建议改用vw方案
腾讯Alloy方案
核心思路:
纯vw方案,不依赖JS,性能更优
1vw = 1% 视口宽度100vw = 屏幕宽度优势:
原生CSS支持,无需引入库,兼容性好
字节跳动方案
核心思路:
vw + rem混合,兼顾响应式和可控性
html {font-size: calc(100vw / 7.5)}适用:
需要支持用户字体缩放的场景
🏆2025年推荐方案: 纯vw方案 + clamp()
为什么选择vw方案?
- ✓浏览器原生支持,无需JS
- ✓性能优于flexible方案
- ✓配合clamp()限制边界值
- ✓PostCSS自动转换,开发便捷
/* 推荐写法 */
.text {
/* 最小14px,最大18px,中间根据屏幕宽度响应 */
font-size: clamp(14px, 3.73vw, 18px);
}
.container {
/* 容器宽度: 最小300px,最大1200px */
width: clamp(300px, 90vw, 1200px);
margin: 0 auto;
}
.gap {
/* 间距: 最小10px,中间响应,最大30px */
gap: clamp(10px, 2.67vw, 30px);
}常见问题解答
中国开发者最关心的8个VW转PX问题
750px设计稿如何快速转换为vw?
使用公式: vw = (设计稿px ÷ 750) × 100。例如设计稿上的100px,计算为 (100÷750)×100 = 13.33vw。建议使用SCSS函数或PostCSS自动转换,无需手动计算。
快速记忆:
100px≈13.3vw, 200px≈26.7vw, 375px=50vw, 750px=100vw
微信小程序rpx和vw怎么互转?
微信小程序规定 750rpx = 屏幕宽度 = 100vw。转换公式: 1rpx = 0.133333vw, 1vw = 7.5rpx。实际开发中,小程序用rpx,H5用vw,uni-app会自动处理转换。
实用技巧:
750px设计稿标注可直接改为rpx使用,无需计算
PostCSS转换如何排除Vant组件库?
在postcss-px-to-viewport配置中添加 selectorBlackList: ['.van'],所有以.van开头的类名都不会被转换。同时配置 exclude: [/node_modules\/vant/] 排除Vant源文件。
uni-app多端单位如何统一?
uni-app推荐统一使用rpx单位。H5端编译时会自动转换为vw,小程序保持rpx,App端动态计算。750rpx设计稿标注值可直接作为rpx值使用。不同平台的特殊处理用条件编译 /* #ifdef H5 */ 来实现。
如何解决1px物理像素边框问题?
移动端Retina屏1px边框会显示较粗。方案:
- ①使用transform: scale(0.5)缩小边框
- ②微信小程序直接用1rpx,会自动处理为物理1px
- ③使用box-shadow模拟:
box-shadow: 0 0 0 0.5px #ddd
蓝湖标注的px如何自动转vw?
使用PostCSS的postcss-px-to-viewport插件。配置好后,从蓝湖复制的px值可直接写在CSS中,编译时自动转为vw。或者使用SCSS函数 @function vw($px),调用时 width: vw(100) 即可。
阿里/腾讯用的是什么适配方案?
淘宝最初使用flexible方案(rem+JS),现已不推荐。腾讯Alloy团队推荐纯vw方案。字节跳动使用vw+rem混合方案。2025年行业推荐: 纯vw方案 + clamp()限制边界,性能好、兼容性强、无需JS。
思源黑体在移动端如何设置?
思源黑体(Source Han Sans)是中文网页的最佳选择。移动端设置:
font-family: 'Source Han Sans CN', 'PingFang SC',
'Microsoft YaHei', sans-serif;
font-size: clamp(14px, 3.73vw, 18px);
font-weight: 400; /* 或500,不建议700 */
line-height: 1.6;
letter-spacing: 0.02em; /* 中文建议略微增加字距 */相关工具
VW 转 MM
将视口宽度转换为毫米
基于视口大小
VW 转 IN
将视口宽度转换为英寸
基于视口大小
VW 转 REM
将视口宽度转换为REM单位
基于根字体大小
VW 转 EM
将视口宽度转换为EM单位
基于字体大小