vue移动端适配方案
一、安装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
}
}}
说明下几个重要参数的使用:
- viewportWidth 必填属性,根据UI提供的设计稿宽度定义
- minPixelValue 必填属性,一般为1
- selectorBlackList 选填属性,通常情况下,可以忽略一些第三方的UI样式,否则viewport将改变第三方UI样式库的单位值
- mediaQuery 选填属性,是否开启媒体查询
- landscape 选填属性,是否添加根据 landscapeWidth 生成的媒体查询条件 @media (orientation: landscape)
- landscapeWidth 选填属性,横屏时使用的视口宽度
适配存在的问题点:
如果产品的需求是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移动端适配方案的更多相关文章
- 基于Vue/React项目的移动端适配方案
本文的目标是通过下文介绍的适配方案,使用vue或react开发移动端及H5的时候,不需要再关心移动设备的大小,只需要按照固定设计稿的px值布局,提升开发效率. 下文给出了本人分别使用create-re ...
- rem移动端适配方案
一. rem vs em 单位 定义 特点 rem font size of the root element 以根元素字体大小为基准 em font size of the element 以父元素 ...
- H5 APP 页面移动端适配方案
H5 APP 页面移动端适配方案 https://segmentfault.com/a/1190000011586301 https://juejin.im/post/5cbdee71f265da03 ...
- 移动端适配方案-rem(基础篇)
常见移动web适配方案一般有3种方法,如下图: ①:定高,宽度百分比(一般用来做一些适配性不高的页面,比如主要以一些文字和图片为主的网页或移动端的头部和底部) ②:flex (更多的用于复杂页面的布局 ...
- 移动端适配方案 flexible.js
前言 移动端适配一直以来都是前端开发中不可或缺的重要组成部分,如果没有了它,那么你做出来的页面极有可能会出现各种意外(写出来的页面与设计稿之间的差别).所有我们得找到一种相对来说让人比较满意的解决方案 ...
- 手淘H5移动端适配方案flexible源码分析
移动端适配一直是一个值得探讨的问题,在业余时间我找了一些页面,查看了一些厂商对于移动端H5页面的适配方案,看到了几个典型的例子,今天就来记录一下我看到的第一个典型的例子,也是我们公司目前普通H5项目正 ...
- 解决vue移动端适配问题
1,先看看网上关于移动端适配讲解 再聊移动端页面适配,rem和vw适配方案! 基础点:rem相对根节点字体的大小.所以不用px; 根字体:字体的大小px; px:你就当成cm(厘米)这样的东西吧: 基 ...
- 整理h5移动端适配方案
<使用Flexible实现手淘H5页面的终端适配>:https://github.com/amfe/article/issues/17 <再聊移动端页面的适配>:https:/ ...
- 【前端适配】vw单位移动端适配方案
近些年移动端的强势崛起,导致移动端适配越来越重要,个人之前一直使用的是rem进行适配,但是发现并不是非常完美,给力的是大漠老师写了一篇<如何在Vue项目中使用vw实现移动端适配>,比较完美 ...
- h5 移动端适配方案思考
基础概念 CSS像素(CSS pixels) 这个是浏览器使用的抽象单位,用来精确度量网页上的内容.平时经常写的width:100px;height:100px;都是与设备无关的. 设备独立像素(de ...
随机推荐
- 【BUUCTF]ACTF2020 新生赛Exec1write up
根据题目分析,俺们要用ping命令! 打开靶机,输入127.0.0.1尝试提交,直接出现无过滤: 尝试管道符执行命令,常见管道符: 1.|(就是按位或),直接执行|后面的语句 2.||(就是逻辑或), ...
- 如何加快打开网页的速度------通过调节“QoS数据包计划程序”的“限制可保留宽带”实现&如何解决win10可能找不到gpedit.msc的问题
参考:http://www.windowszj.com/news/win10/42119.html http://www.docin.com/p-1510367352.html(QoS数据包计划程序有 ...
- 给jui(dwz)的菜单树换一套漂亮的图标
JUI是一个免费开源的框架,在使用初期,会遇到一些麻烦,因为文档实在太少了,完全不知道从哪里入门,但是,一旦你深入学习后,你会发现,你的选择是不错的,它会提高你开发的效率,同时,你会深深爱上它. 目前 ...
- 驱动开发:配置Visual Studio驱动开发环境
在正式开始驱动开发之前,需要自行搭建驱动开发的必要环境,首先我们需要安装Visual Studio 2013这款功能强大的程序开发工具,在课件内请双击ISO文件并运行内部的vs_ultimate.ex ...
- OVS内核流表查询过程
概括 现在的OVS使用microflow+megaflow缓存查询流表,ovs整体流程是从ovs_vport_receive(datapath/vport.c)开始,然后进入ovs_dp_proces ...
- 树状分级框架UI实例
树状分级框架UI实例:(内容参考https://zhuanlan.zhihu.com/p/108485875) #coding:utf8 #!/usr/bin/env python #@author: ...
- 对比 elasticsearch 和 mysql
最近阅读了elasticsearch的官方文档,学习了它的很多特性,发现elasticsearch和mysql有很多地方类似,也有很多地方不同.这里做一个对比,帮助大家加深对elasticsearch ...
- proprety详解
property() 函数和@property修饰符. 第一种方法,使用property() 函数: class Person: def __init__(self): self.__name= No ...
- 学习关于JavaScript常用的8大设计模式
JavaScript 常用的8大设计模式有 工厂模式:工厂模式是一种创建对象的模式,可以通过一个共同的接口创建不同类型的对象,隐藏了对象的创建过程. 单例模式:单例模式是一种只允许实例化一次的对象模式 ...
- [JavaScript]JS屏蔽浏览器右键菜单/粘贴/复制/剪切/选中 [转载]
前两天在解决一个项目缺陷时,突发感兴趣,了解一下~ 1 JS事件 document.oncontextmenu // 右键菜单 document.onpaste //粘贴 document.oncop ...