使用postcss-px-to-viewport后页面元素错位怎么办?
大家好,我在用postcss-px-to-viewport做移动端适配时遇到个怪问题。按教程设置了designWidth和deviceDPI,但页面底部按钮总偏移,而且在iPhone12上显示正常,到iPhone13就错乱了。
我试过把designWidth改成本地实际宽度,发现元素反而更大了,文字还溢出了容器。这是不是和viewport的配置有关?配置代码贴出来大家帮忙看看:
module.exports = {
plugins: {
'postcss-px-to-viewport': {
viewportWidth: 375,
viewportHeight: 667,
unitPrecision: 5,
selectorBlackList: ['.ignore', '.hairlines'],
minPixelValue: 1
}
}
}
现在页面元素位置像被拉伸过一样,特别是flex布局的地方错得最严重,是不是需要配合其他配置?
postcss-px-to-viewport-8-plugin这个插件,它支持多设计稿适配。代码改成这样:
另外记得检查HTML里的meta标签,确保写了
<meta name="viewport" content="width=device-width, initial-scale=1.0">,不然怎么折腾都没用。iPhone12和13的屏幕分辨率确实不一样,但它们的逻辑像素宽度都是375。你的问题出在unitPrecision设置得太小了,建议改成3就够用了。另外minPixelValue设置成1太低了,改成2会更好,这样可以避免一些小尺寸元素被错误转换。
具体配置给你调一下:
还有个重要的点,记得检查下HTML的meta标签,要确保有这行代码:
flex布局错乱的问题,大概率是因为某些元素的padding或者margin没处理好。建议你在全局样式里加个reset,把box-sizing统一设成border-box:
最后提醒下,别直接改designWidth,这个值是用来做转换基准的,不是让你适配具体设备的。按这个方案调整应该就没啥大问题了,我之前也被坑过好多次才总结出来的经验。