我们在vue移动端项目中的适配一般都采用rem,但是rem也不是能兼容所有的终端。

随着viewport单位越来越受到众多浏览器的支持,下面将简单介绍怎么实现vw的兼容问题,用vw代替rem

当我们采用vue-cli脚手架搭建完项目,安装所有依赖包之后,用npm run dev启动后,在根目录有一个 .postcssrc.js 文件,文件结构如下:

vue-cli默认已经安装以上三个插件:

postcss-import:相关配置可以点击这里。主要功有是解决@import引入路径问题。使用这个插件,可以让你很轻易的使用本地文件、node_modules或者web_modules的文件。这个插件配合postcss-url让你引入文件变得更轻松。

postcss-url:相关配置可以点击这里。该插件主要用来处理文件,比如图片文件、字体文件等引用路径的处理。在Vue项目中,vue-loader已具有类似的功能,只需要配置中将vue-loader配置进去。

autoprefixer:用来自动处理浏览器前缀的一个插件。如果你配置了postcss-cssnext,其中就已具备了autoprefixer的功能。在配置的时候,未显示的配置相关参数的话,表示使用的是Browserslist指定的列表参数,你也可以像这样来指定last 2 versions 或者 > 5%。

Vue-cli默认配置了上述三个PostCSS插件,但我们要完成vw的布局兼容方案,或者说让我们能更专心的撸码,还需要配置下面的几个PostCSS插件:

然后我们安装

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

}

}

}

由于配置文件修改了,所以重新跑一下 npm run dev,然后项目就可以看到了。

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

postcss-cssnext:其实就是cssnext。该插件可以让我们使用CSS未来的特性,其会对这些特性做相关的兼容性处理。有关于cssnext的每个特性的操作文档,可以点击这里浏览。

cssnano:主要用来压缩和清理CSS代码。在Webpack中,cssnano和css-loader捆绑在一起,所以不需要自己加载它。详细文档可以点击这里获取。在cssnano的配置中,使用了preset:"advanced",所以我们需要另外安装:

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

"cssnano": {

"autoprefixer": false,

"postcss-zindex": false

}

上面的代码把autoprefixer和postcss-zindex禁掉了。前者是有重复调用,后者是一个讨厌的东东。只要启用了这个插件,z-index的值就会重置为1。这是一个天坑,千万记得将postcss-zindex设置为false。

postcss-px-to-viewport:要用来把px单位转换为vw、vh、vmin或者vmax这样的视窗单位,也是vw适配方案的核心插件之一。在配置中需要配置相关的几个关键参数:

"postcss-px-to-viewport": {

viewportWidth: 750, // 视窗的宽度,对应的是我们设计稿的宽度,一般是750 (如果我们设置的宽度是300px,那么编译之后的宽度为(300/750*100)=40vw,如果频宽实际为375px,那么该元素的宽度为(375*0.4)= 150px)

viewportHeight: 1334, // 视窗的高度,根据750设备的宽度来指定,一般指定1334,也可以不配置

unitPrecision: 3, // 指定`px`转换为视窗单位值的小数位数(很多时候无法整除)

viewportUnit: "vw", // 指定需要转换成的视窗单位,建议使用vw

selectorBlackList: ['.ignore', '.hairlines'],// 指定不转换为视窗单位的类,可以自定义,可以无限添加,建议定义一至两个通用的类名

minPixelValue: 1, // 小于或等于`1px`不转换为视窗单位,你也可以设置为你想要的值

mediaQuery: false // 允许在媒体查询中转换`px`

},

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

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

每一次的记录,都是向前迈进的一步

vue怎么vw布局好用_Vue项目中使用vw实现移动端适配-阿里云开发者社区相关推荐

  1. mouted vue 操作dom_vue中使用refs定位dom的坑-阿里云开发者社区

    使用element-ui的表单验证,出现"this.$refs.ruleForm.validate is not a function" 使用mint-ui的popup,在moun ...

  2. vue项目中使用lib-flexible解决移动端适配

    第一部分:项目中引入lib-flexible 一.项目中安装lib-flexible $ npm install lib-flexible --save 二.在项目的入口js文件中引入lib-flex ...

  3. maven引用公共包_Maven项目怎样引用其他项目/或者jar包-阿里云开发者社区

    惯例: 我是温浩然: 现在越来越多的项目都用Maven进行管理jar包,我这里说的是,Maven怎样引用本地Maven项目. 一个项目从SVN上下载下来,先在本地删除(只是在工作环境中删除,不要删除文 ...

  4. vue 移动端头像裁剪_使用vue-cropper裁剪正方形上传头像-阿里云开发者社区

    引用方式 在组件内使用 import { VueCropper } from 'vue-cropper' components: { VueCropper, }, main.js里面使用 import ...

  5. GitHub 版本控制 项目托管 04 创建GitHub远程仓库-阿里云开发者社区

    (本博客GitHub分支下所有相关资料的统一下载链接:http://pan.baidu.com/s/1bo5RrtX) (PS:任何问题欢迎在下方评论区留言,12小时内回复~) 上接<GitHu ...

  6. java sl4j 日志_为Java项目添加slf4j的log日志-阿里云开发者社区

    我们今天要给之前编码的一个maven的web项目提供slf4j的日志,这样所有的日志信息可以显示到项目的某个目录的log文件中. 项目的样子如下图: 首先配置pom,我也不知道下面的内容是否必要 or ...

  7. qiankun 传统项目配置_飞猪微前端实践:统一运营工作台的解决方案-阿里云开发者社区...

    作者:侑夕 飞猪一体化运营工作台一期工作经过 3 个月的开发终于内部开始使用,期间我们面向运营场景,基于微前端与 SDK 化的一体化集成方案,完成 4 大场景 10 余个平台的接入和配置打通,并对数百 ...

  8. python 项目学编程_《从问题到程序:用Python学编程和计算》——3.5 练习-阿里云开发者社区...

    复习下面概念:数值积分,区间分割法,舍入误差,简单重复,累积,累积变量,生成和筛选,递推,递推变量,素数(质数),因子和真因子,哥德巴赫猜想,输入循环,输入控制的循环,递归定义,递归函数,循环定义,无 ...

  9. vue怎么vw布局好用_vue cli3项目的pc自适应布局_vw

    前言 vw布局的页面是等比改变的,比如我们在一个750px的屏幕宽度中使用了vw,当我们把屏幕宽度改为1920的时候,网页的整个样式包括字体都会等比放大.vw布局我用于大屏监控数据展示. 下图是750 ...

最新文章

  1. vue入门实践,style和数据绑定
  2. RabbitMQ:入门(三)——RabbitMQ用户管理、角色管理与权限管理
  3. “30位新生代数字经济人才”选拔开启!@乌镇·世界互联网大会
  4. Windows 2008-IIS 7.0-SSL操作大全
  5. centos 6.5配置samba
  6. CSS之expression
  7. iframe嵌套改变url地址
  8. 《APUE》第6章笔记
  9. spring基础——注解注入
  10. 3800元!爆料大神怒赞谷歌Pixel 6:这是今年最好看手机!
  11. python如何将天数转换为日期字符串
  12. java导出excel超出65536条处理
  13. Oracle技术之SYS用户对象不支持延迟段
  14. 云呐-动环监控巡检表,信息机房巡检表
  15. 【Visio】 Visio的安装
  16. field方法的用法
  17. 新概念英语精讲 钟平 pdf_新概念英语三()
  18. PC端调用摄像头录制视频——vue标准写法
  19. 微信JS接口安全域名设置不成功,提示没有找到文件
  20. 1008: 美元和人民币

热门文章

  1. vc++画线段的函数_专题:精选中考数学压轴题5道,函数综合,内含解题秘籍
  2. python 惰性序列_菜鸟学飞自学Python(五)高阶函数
  3. python文件实时同步_pyinotify模块实时文件同步
  4. java lambda 画蛇添足_什么时候使用Lambda函数?
  5. c语言十进制小数转其他进制,只写出了十进制小数转换成二进制的,求二进制小数转十进制的...
  6. 解封装(五):AVStream和AVCodecParameters分析
  7. struts2 ajax上传文件 file空_WordPress插件漏洞分析:WPDiscuz任意文件上传漏洞
  8. java堆内存_java堆内存详解
  9. linux连不上网 ens33,如何解决Linux 系统下 ifconfig 命令无网络接口 ens33
  10. 单文件图片管理php,php封装的单文件(图片)上传类完整实例