基于vue-cli配置lib-flexible + rem实现移动端自适应


Posted in Javascript onDecember 26, 2017

安装flexible

npm install lib-flexible --save

引入flexible

在项目入口文件main.js中添加如下代码,引入flexible

import 'lib-flexible'

px 转 rem

使用 webpack 的 px2rem-loader,自动将px转换为rem

安装px2rem-loader

npm install px2rem-loader --save-dev

配置px2rem-loader

在vue-cli生成的文件中,找到以下文件 build/utils.js,如下图添加配置

基于vue-cli配置lib-flexible + rem实现移动端自适应

关于importLoaders:如若有疑问,请参考webpack深入与实战4-4

2017.12.8更新说明:是否需要配置importLoaders,可参考最底部的说明。

基于vue-cli配置lib-flexible + rem实现移动端自适应

px2rem 用法

安装px2rem后,再使用px上有些不同,大家可以参考px2rem官方介绍,下面简单介绍一下。

直接写px,编译后会直接转化成rem ---- 除开下面两种情况,其他长度用这个

在px后面添加/*no*/,不会转化px,会原样输出。 --- 一般border需用这个

在px后面添加/*px*/,会根据dpr的不同,生成三套代码。---- 一般字体需用这个

示例代码

编译前(自己写的代码)

.selector {
 width: 150px;
 height: 64px; /*px*/
 font-size: 28px; /*px*/
 border: 1px solid #ddd; /*no*/
}

编译后(打包后的代码)

.selector {
 width: 2rem;
 border: 1px solid #ddd;
}
[data-dpr="1"] .selector {
 height: 32px;
 font-size: 14px;
}
[data-dpr="2"] .selector {
 height: 64px;
 font-size: 28px;
}
[data-dpr="3"] .selector {
 height: 96px;
 font-size: 42px;
}

重启项目,就可以愉快的用设计稿上的px了。

注意:坑

不能在index.html的头部加 name 为 viewport 的 meta 标签,flexible会自动为我们添加!

更新:对外部引入css,px2rem能不能转换rem问题

2017.12.8更新:在实际运用中发现对于外部引入的css文件,有时候px2rem能正常转换,有时候又不能转换,到底是什么原因呢?试验了三种不同的css引入情况,发现第一种能正常转换,二三不能正常转换,至于原因,由于才疏学浅,还是不懂,求大神解答三种引入方式的区别。

如果明白了这些方法,就没必要再配置cssLoader的importLoaders了,因为下面的方法更容易控制外部引入的css是否需要转rem,而更改importLoaders就控制不了了,它会强制转换。

<style src='../assets/style.css'>
 /* px2rem能正常转换 */
</style>
<style>
 /* px2rem不能正常转换 */
 @import '../assets/style.css';
</style>
<style>
 /* px2rem不能正常转换 */
 @import url('../assets/style.css');
</style>

总结

以上所述是小编给大家介绍的基于vue-cli配置lib-flexible + rem实现移动端自适应,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
Sep 22 Javascript
JQuery下关于$.Ready()的分析
Dec 13 Javascript
jQuery学习4 浏览器的事件模型
Feb 07 Javascript
jquery dialog键盘事件代码
Aug 01 Javascript
javascript中onmouse事件在div中失效问题的解决方法
Jan 09 Javascript
javascript采用数组实现tab菜单切换效果
Dec 12 Javascript
javascript瀑布流式图片懒加载实例
Jun 28 Javascript
浅谈javascript中new操作符的原理
Jun 07 Javascript
详解微信小程序开发之城市选择器 城市切换
Jan 17 Javascript
详解JS数据类型的值拷贝函数(深拷贝)
Jul 13 Javascript
Node.JS获取GET,POST数据之queryString模块使用方法详解
Feb 06 Javascript
vue在App.vue文件中监听路由变化刷新页面操作
Aug 14 Javascript
基于 flexible 的 Vue 组件:Toast -- 显示框效果
Dec 26 #Javascript
细说webpack源码之compile流程-rules参数处理技巧(2)
Dec 26 #Javascript
AngularJS实现的根据数量与单价计算总价功能示例
Dec 26 #Javascript
细说webpack源码之compile流程-rules参数处理技巧(1)
Dec 26 #Javascript
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
Dec 26 #Javascript
细说webpack源码之compile流程-入口函数run
Dec 26 #Javascript
Vue 进入/离开动画效果
Dec 26 #Javascript
You might like
用sql命令修改数据表中的一个字段为非空(not null)的语句
2010/06/04 PHP
php连接mssql的一些相关经验及注意事项
2013/02/05 PHP
Zend的Registry机制的使用说明
2013/05/02 PHP
浅析Yii2 gridview实现批量删除教程
2016/04/22 PHP
浅析php如何实现App常用的秒发功能
2016/08/03 PHP
PHP判断一个数组是另一个数组子集的方法详解
2017/07/31 PHP
PHP 文件锁与进程锁的使用示例
2017/08/07 PHP
PHP unset函数原理及使用方法解析
2020/08/14 PHP
js下弹出窗口的变通
2007/04/18 Javascript
js+CSS 图片等比缩小并垂直居中实现代码
2008/12/01 Javascript
jQuery实战之品牌展示列表效果
2011/04/10 Javascript
js 获取和设置css3 属性值的实现方法
2013/05/06 Javascript
上传图片预览JS脚本 Input file图片预览的实现示例
2014/10/23 Javascript
jquery实现的省市区三级联动
2015/04/02 Javascript
第六篇Bootstrap表格样式介绍
2016/06/21 Javascript
使用jQuery加载html页面到指定的div实现方法
2016/07/13 Javascript
Vue监听数组变化源码解析
2017/03/09 Javascript
一个Js文件函数中调用另一个Js文件函数的方法演示
2017/08/14 Javascript
[52:26]完美世界DOTA2联赛决赛 FTD vs Phoenix 第一场 11.08
2020/11/11 DOTA
Python多线程编程(六):可重入锁RLock
2015/04/05 Python
Python 通过URL打开图片实例详解
2017/06/01 Python
python unittest实现api自动化测试
2018/04/04 Python
python2.6.6如何升级到python2.7.14
2018/04/08 Python
python简单鼠标自动点击某区域的实例
2019/06/25 Python
python如何制作英文字典
2019/06/25 Python
临床医学系毕业生推荐信
2013/11/09 职场文书
应届生法律顾问求职信
2013/11/19 职场文书
迎元旦广播稿
2014/02/22 职场文书
防灾减灾宣传标语
2014/10/07 职场文书
技术支持岗位职责
2015/02/13 职场文书
三下乡个人总结
2015/03/04 职场文书
旷工检讨书大全
2015/08/15 职场文书
女性励志书籍推荐
2019/08/19 职场文书
为什么mysql字段要使用NOT NULL
2021/05/13 MySQL
SpringBoot中使用Redis作为全局锁示例过程
2022/03/24 Java/Android
SpringBoot详解执行过程
2022/07/15 Java/Android