一、安装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. TCP粘包和拆包

    假设客户端分别发送了两个数据包D1和D2给服务器,由于服务器一次读取的字节数是不确定的,故可能存在以下4中情况: 服务端分两次读到了两个独立的数据包D1和D2,没有粘包和拆包 服务端分一次收到两个数据 ...

  2. linux查看mac地址

    1. ip addr show (ip address show .ip addr ) 查看本机ip和额外的一些信息 2.ifconfig -a  其中 HWaddr 就是mac地址 3.cat /s ...

  3. Codeforces Round #857 Div.1/Div.2 CF1801/1802 2A~2F 题解

    点我看题(Div2) Div 2A. Likes 如果要赞最多,肯定是先放所有的点赞,再放所有移除的操作.如果要最少,那就先把赞分成两种:最后被移除的和没被移除的:最后先放所有被移除的,放一个移除一个 ...

  4. 声网 MetaKTV 技术揭秘之“声临其境”:3D 空间音效+空气衰减+人声模糊

    声网近期发布了"MetaChat 元语聊"."MetaKTV"解决方案,致力于提供一种全新的元宇宙互动社交.K 歌方式,其中都提到了"3D 空间音频& ...

  5. 中国科学院2019年大学生数学夏令营考试试题 选做 (Mathematica练习)

    目录 试题 1 6 9 solution to (1) solution to (2) 相关读物 试题 选择性地做一些,没有对答案.能机器算的我就不拿纸笔算了,当然实际考试是笔试... 不定期更新 1 ...

  6. Hugging News #0317: ChatGLM 会成为 HF 趋势榜的第一名吗?

    每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...

  7. JS有哪些变态语法,你知道吗?

    JS作为一门如此灵活的语言,自然在编码时给我们带来了很多方便,但方便的同时,也衍生出了很多变态的语法,下面我们来梳理一些常见的变态语法,希望你下次在某位大牛的代码中看到这样的东西,不要惊掉下巴. NO ...

  8. Netty ByteBuf 详解

    ByteBuf类:Netty的数据容器 ByteBuf 维护了两个不同的索引:① readerIndex:用于读取:② writerIndex:用于写入:起始位置都从0开始:​名称以 read或者 w ...

  9. Python 中 is 和 == 的区别

    is 和 == 的区别 相信学过 Python 小伙伴们都知道 is 和 == 都是用来比较 Python 对象的,但是区别就是 is 比较需要对象的值和内存地址都相等 == 比较只需要对象的值相等就 ...

  10. MySQL相关知识点思维导图整理

    MySQL相关知识点思维导图整理 Xmind思维导图下载地址: 蓝奏云:https://shuihan.lanzoui.com/iXZw7frkn5a