【前端适配】vw单位移动端适配方案

近些年移动端的强势崛起,导致移动端适配越来越重要,个人之前一直使用的是rem进行适配,但是发现并不是非常完美,给力的是大漠老师写了一篇《如何在Vue项目中使用vw实现移动端适配》,比较完美的解决了适配问题,下面是自己动手搭建后的一些整理。

创建项目

//vue-cli 3.0+ 版本
vue init webpack vue-vw-demo
cd  vue-vw-demo

安装必要插件

npm i postcss-aspect-ratio-mini postcss-px-to-viewport postcss-write-svg postcss-cssnext postcss-viewport-units cssnano postcss-import postcss-url --s

配置根目录下的postcss.config.js

复制代码
module.exports = {
  "plugins": {
    "postcss-import": {},
    "postcss-url": {},
    "postcss-aspect-ratio-mini": {},
    "postcss-write-svg": { utf8: false },
    "postcss-cssnext": {},
    "postcss-px-to-viewport": {
      viewportWidth: 750, // 视窗的宽度,对应的是我们设计稿的宽度,一般是750 
      viewportHeight: 1334, // 视窗的高度,根据750设备的宽度来指定,一般指定1334,也可以不配置 
      unitPrecision: 3, // 指定`px`转换为视窗单位值的小数位数(很多时候无法整除) 
      viewportUnit: 'vw', // 指定需要转换成的视窗单位,建议使用vw 
      selectorBlackList: ['.ignore', '.hairlines'], // 指定不转换为视窗单位的类,可以自定义,可以无限添加,建议定义一至两个通用的类名 
      minPixelValue: 1, // 小于或等于`1px`不转换为视窗单位,你也可以设置为你想要的值 
      mediaQuery: false // 允许在媒体查询中转换`px` 
    },
    "postcss-viewport-units":{},
    "cssnano": {
      preset: "advanced",
      autoprefixer: false,
      "postcss-zindex": false
     }
  }
}
复制代码

兼容 vw(index.html引入)

复制代码
//在index.html添加js
<script src="//g.alicdn.com/fdilab/lib3rd/viewport-units-buggyfill/0.6.2/??viewport-units-buggyfill.hacks.min.js,viewport-units-buggyfill.min.js"></script>
//在index.html中调用viewport-units-buggyfill
<script> 
  window.onload = function () { 
    window.viewportUnitsBuggyfill.init({ 
      hacks: window.viewportUnitsBuggyfillHacks 
    });
  } 

</script>
复制代码

配置scss

npm install node-sass --save-dev
npm install sass-loader --save-dev

./build/webpack.base.config.js添加如下配置

复制代码
module.exports = {
  module: {
    rules: [
      ...
      {
        test: /\.scss$/,
        loaders: ["style", "css", "sass"]
      }
    ]
  }
}
复制代码

Tip:组件中使用,记得加上lang='scss'

        设计稿20px这里写两倍(40px)

最后运行cnpm run dev启动项目,最后还是推荐看一看大漠老师的原文《如何在Vue项目中使用vw实现移动端适配》,原文写的很清楚,对各个插件也进行了解释,相信你看了会有收获。

 

posted @   JeckHui  阅读(1859)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示