一、安装postcss-px-to-viewport插件

1.使用npm安装

$ npm install postcss-px-to-viewport --save-dev

2.或者使用yarn安装

$ yarn add -D postcss-px-to-viewport

二、配置适配插件的参数

{
unitToConvert: 'px', //需要转换的单位
viewportWidth: 750, //设计稿的宽度
unitPrecision: 5, //单位转换后保留的精度
propList: ['*'], //能转化为vw的属性列表,默认'*'
viewportUnit: 'vw', //转换后的视口单位
fontViewportUnit: 'vw', //字体使用的视口单位
selectorBlackList: [], //忽略的css选择器
minPixelValue: 1, //最小的转换数值
mediaQuery: false, //是否开启媒体查询
replace: true, //是否直接更换属性值,而不添加备用属性
exclude: [], //忽略某些文件夹下的文件或特定文件
landscape: false,
landscapeUnit: 'vw', //横屏时使用的单位
landscapeWidth: 750 //横屏时使用的视口宽度
}

在项目的根目录下新建一个postcss.config.js配置文件,并且在配置文件里写入:

module.exports = {
plugins: {
...
'postcss-px-to-viewport': {
"viewportWidth": 750,
"minPixelValue": 1,
"mediaQuery": false,
"selectorBlackList": ["van", "el"],
"landscape": true,
"landscapeUnit": "vw",
"landscapeWidth": 2048
}
}}

说明下几个重要参数的使用:

  1. viewportWidth 必填属性,根据UI提供的设计稿宽度定义
  2. minPixelValue 必填属性,一般为1
  3. selectorBlackList 选填属性,通常情况下,可以忽略一些第三方的UI样式,否则viewport将改变第三方UI样式库的单位值
  4. mediaQuery 选填属性,是否开启媒体查询
  5. landscape 选填属性,是否添加根据 landscapeWidth 生成的媒体查询条件 @media (orientation: landscape)
  6. landscapeWidth 选填属性,横屏时使用的视口宽度

适配存在的问题点:

  1. 如果产品的需求是PC端查看移动端网页时,需要居中显示。
    由于postcss-px-to-viewport的原理是,根据设计稿,把所有试图单位的宽高设置成vw单位,也就是一个比例,那么所有的设备传真实像素进来的时候,会得出真实的px值。
    所以我们PC全屏时,看到的效果是移动端网页充满PC的屏幕宽度,这时候,landscape就可以帮我们解决这个问题了。

 "landscape": true,
"landscapeUnit": "vw",
"landscapeWidth": 2048

landscape参数的作用(上面有解释)。

2. 如果我们引用了第三方UI库,例如element-ui、vant等热门ui被压缩
         selectorBlackList帮我们处理了这个问题。
         只需要将第三方ui的前缀加入到selectorBlackList数组中,例如

"selectorBlackList": ["van", "el"]

那么postcss-px-to-viewport自动排除这些带前缀的组件

3.到这里配置文件以及依赖包就安装完了,但是小伙伴们发现运行后项目px单位并没有转化为vw,而且上面的配置根本就不起作用?这到底是什么原因引起的呢?起始我一开始也很纳闷,一直在查资料也没有相关的文章有说明;后来我在package.json这个文件里找到了解决的方法,

  "eslintConfig": {
"root": true,
"env": {
"node": true
},
"extends": [
"plugin:vue/essential",
"eslint:recommended"
],
"rules": {},
"parserOptions": {
"parser": "babel-eslint"
}
},
"postcss": {
"plugins": {
"autoprefixer": {}
}
},
"browserslist": [
"> 1%",
"last 2 versions"
]
}

在package.json里找到下面的这一段配置并且删掉

 "postcss": {
"plugins": {
"autoprefixer": {}
}
},

重新运行yarn serve就可以了

vue移动端适配方案的更多相关文章

  1. 基于Vue/React项目的移动端适配方案

    本文的目标是通过下文介绍的适配方案,使用vue或react开发移动端及H5的时候,不需要再关心移动设备的大小,只需要按照固定设计稿的px值布局,提升开发效率. 下文给出了本人分别使用create-re ...

  2. rem移动端适配方案

    一. rem vs em 单位 定义 特点 rem font size of the root element 以根元素字体大小为基准 em font size of the element 以父元素 ...

  3. H5 APP 页面移动端适配方案

    H5 APP 页面移动端适配方案 https://segmentfault.com/a/1190000011586301 https://juejin.im/post/5cbdee71f265da03 ...

  4. 移动端适配方案-rem(基础篇)

    常见移动web适配方案一般有3种方法,如下图: ①:定高,宽度百分比(一般用来做一些适配性不高的页面,比如主要以一些文字和图片为主的网页或移动端的头部和底部) ②:flex (更多的用于复杂页面的布局 ...

  5. 移动端适配方案 flexible.js

    前言 移动端适配一直以来都是前端开发中不可或缺的重要组成部分,如果没有了它,那么你做出来的页面极有可能会出现各种意外(写出来的页面与设计稿之间的差别).所有我们得找到一种相对来说让人比较满意的解决方案 ...

  6. 手淘H5移动端适配方案flexible源码分析

    移动端适配一直是一个值得探讨的问题,在业余时间我找了一些页面,查看了一些厂商对于移动端H5页面的适配方案,看到了几个典型的例子,今天就来记录一下我看到的第一个典型的例子,也是我们公司目前普通H5项目正 ...

  7. 解决vue移动端适配问题

    1,先看看网上关于移动端适配讲解 再聊移动端页面适配,rem和vw适配方案! 基础点:rem相对根节点字体的大小.所以不用px; 根字体:字体的大小px; px:你就当成cm(厘米)这样的东西吧: 基 ...

  8. 整理h5移动端适配方案

    <使用Flexible实现手淘H5页面的终端适配>:https://github.com/amfe/article/issues/17 <再聊移动端页面的适配>:https:/ ...

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

    近些年移动端的强势崛起,导致移动端适配越来越重要,个人之前一直使用的是rem进行适配,但是发现并不是非常完美,给力的是大漠老师写了一篇<如何在Vue项目中使用vw实现移动端适配>,比较完美 ...

  10. h5 移动端适配方案思考

    基础概念 CSS像素(CSS pixels) 这个是浏览器使用的抽象单位,用来精确度量网页上的内容.平时经常写的width:100px;height:100px;都是与设备无关的. 设备独立像素(de ...

随机推荐

  1. Android Studio Dolphin 稳定版正式发布

      作者 / Yuri Blaise, Product Manager, Android为了帮助开发者们更轻松地打造高质量应用,Android Studio 团队深入调研,为大家带来了最新稳定版 An ...

  2. ubuntu主机连接家里的网线

    第一步,先让物理机连接网络: 注释掉/etc/network/interfaces文件的最后一行,即: 意思是不要手动设置网络了,而是转为自动设置.这样,主机就可以联网了. 参考链接:https:// ...

  3. ADOStoredProc动态调用存储过程

    有些用ADOStoredProc进行操作时,要动态创建输入输出参数,一定要用 ADOStoredProc1.Parameters.Refresh;将参数进行刷新一下.

  4. Python中的join函数用法

    函数:string.join()Python中有join()和os.path.join()两个函数,具体作用如下:    join():    连接字符串数组.将字符串.元组.列表中的元素以指定的字符 ...

  5. gitee使用

    1.github的国内跳转 github国内无法直接访问,所以直接使用gitee导入github工程 https://gitee.com/     2.虚拟机配置ssh公钥 https://gitee ...

  6. python通过轮子安装第三方库(以Wordcloud为例)

    1.查看python版本 直接输入如下命令: python 执行结果如下: 我们可以直到,本机的python版本为: AMD64bit 3.11版本python 2.下载合适python版本的轮子 下 ...

  7. markdown常用语法及Typora的使用

    一.markdown markdown简介   markdown是一种文档格式,后缀名为.md.markdown非常适于写博客,基本所有博客网站都支持markdown语法格式. 1.标题   mark ...

  8. SpringBoot笔记--自动配置(高级内容)(上集)

    原理分析 自动配置 Condition--增加的条件判断功能 来一个案例说明: 具体实现: 没有要求的话,就是这样的: Config.java User.java SpringLearnApplica ...

  9. 从开源模型、框架到自研,声网 Web 端虚拟背景算法正式发布

    根据研究发现,在平均 38 分钟的视频会议里面,大概会有 13 分钟左右的时间用于处理和干扰相关的事情.同时研究也表明在参加在线会议的时候,人们更加倾向于语音会议,其中一个关键原因就是大家不希望个人隐 ...

  10. P7961 数列 题解

    对模拟的过程不敏感,对范围的数字不敏感 手玩是发现规律的好方式 计数 dp 以及一众计数题是明显短板,需要加紧突破. 样例解释已经较为明显地提示了这道题的大致做法.对于计数题,有动归与组合数学两种方法 ...