vue 移动端完整项目搭建(三)使用vw实现移动端适配

我们在vue移动端项目中的适配一般都采用rem,但是rem也不是能兼容所有的终端。随着viewport单位越来越受到众多浏览器的支持,下面将简单介绍怎么实现vw的兼容问题。

Vue-cli新建的项目中,我们还需要配置以下几个PostCSS插件:

postcss-aspect-ratio-mini,postcss-px-to-viewport,postcss-write-svgpostcss-cssnext,cssnano,postcss-viewport-units

然后我们安装

npm i postcss-aspect-ratio-mini postcss-px-to-viewport postcss-write-svg postcss-cssnext postcss-viewport-units cssnano --save

安装成功之后,在项目根目录下的package.json文件中,可以看到新安装的依赖包。

接下来在.postcssrc.js文件对新安装的PostCSS插件进行配置:

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

    }

  }

}

在cssnano的配置中,使用了preset: "advanced",所以我们需要另外安装cssnano-preset-advanced插件:

npm i cssnano-preset-advanced --save-dev

如果你不想需要的话,把这段配置注释掉就ok了,当然并不建议这么做,我百度了很久也不知道这句话是干嘛的,如果有知道的请告诉我。

到此配置已经完毕,可以正常写代码了。

下面简单介绍上面几个插件的作用:

postcss-cssnext:其实就是cssnext。该插件可以让我们使用CSS未来的特性,其会对这些特性做相关的兼容性处理。

cssnano:主要用来压缩和清理CSS代码。

postcss-px-to-viewport:要用来把px单位转换为vw、vh、vmin或者vmax这样的视窗单位,也是vw适配方案的核心插件之一。

postcss-aspect-ratio-mini:主要用来处理元素容器宽高比。

postcss-write-svg:插件主要用来处理移动端1px的解决方案。该插件主要使用的是border-image和background来做1px的相关处理。

你可能感兴趣的:(vue 移动端完整项目搭建(三)使用vw实现移动端适配)