postcss-viewport转换后页面元素错位怎么办?
用postcss-px-to-viewport做移动端适配时,所有元素都缩放到奇怪的位置,文字还溢出容器了。按照文档配了:
module.exports = {
plugins: {
'postcss-px-to-viewport': {
viewportWidth: 375,
viewportHeight: 667,
unitPrecision: 5,
selectorBlackList: []
}
}
}
测试页面用的设计稿是375宽,但实际在手机上输入框和按钮全挤在一起。试过改unitPrecision和remUnit都不行,是不是还要配合meta标签?
按照规范,移动端适配必须加这行 meta:
没有它,手机浏览器会用默认的视口宽度(比如 980px)来渲染,你 postcss 转出来的 vw 值就全都对不上了,导致元素挤压、文字溢出这些问题。
另外你现在的配置只设了 viewportWidth,建议补全 viewportUnit 参数明确用 vw:
改完之后清下缓存重新构建,再在真机测试。记住一点:postcss-px-to-viewport 和 rem 方案不同,它不需要 js 动态计算根字体大小,纯靠 css 单位 + 正确的 viewport 就能工作。
然后你现在的配置里
selectorBlackList是空数组,建议加点忽略规则,比如 .ignore-px 这类选择器。最后检查下样式里有没有固定宽高或者浮动导致的错位。实在不行就把设计稿单位直接改成vw/vh试试,有时候postcss转换会有奇怪问题。