基于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 相关文章推荐
jquery实现树形二级菜单实例代码
Nov 20 Javascript
IE与FireFox的JavaScript兼容问题解决办法
Dec 31 Javascript
新增加的内容是如何将div的scrollbar自动移动最下面
Jan 02 Javascript
再谈JavaScript线程
Jul 10 Javascript
jQuery实现图片向左向右切换效果的简单实例
May 18 Javascript
Javascript实现汉字和拼音互转的终极方案
Oct 19 Javascript
zTree jQuery 树插件的使用(实例讲解)
Sep 25 jQuery
JS实现的简单表单验证功能示例
Oct 13 Javascript
6行代码实现微信小程序页面返回顶部效果
Dec 28 Javascript
ES6知识点整理之模块化的应用详解
Apr 15 Javascript
浅析JavaScript 函数防抖和节流
Jul 13 Javascript
Vue this.$router.push(参数)实现页面跳转操作
Sep 09 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
PHP不用递归实现无限分级的例子分享
2014/04/18 PHP
Laravel框架中扩展函数、扩展自定义类的方法
2014/09/04 PHP
php根据日期显示所在星座的方法
2015/07/13 PHP
PHP单例模式是什么 php实现单例模式的方法
2016/05/14 PHP
完美解决thinkphp唯一索引重复时出错的问题
2017/03/31 PHP
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
2007/05/08 Javascript
js各种验证文本框输入格式(正则表达式)
2010/10/22 Javascript
jQuery参数列表集合
2011/04/06 Javascript
js 获取坐标 通过JS得到当前焦点(鼠标)的坐标属性
2013/01/04 Javascript
JavaScript将相对地址转换为绝对地址示例代码
2013/07/19 Javascript
JavaScript避免代码的重复执行经验技巧分享
2014/04/17 Javascript
jquery使用hide方法隐藏指定id的元素
2015/03/30 Javascript
js面向对象的写法
2016/02/19 Javascript
使用D3.js创建物流地图的示例代码
2018/01/27 Javascript
浅谈Vue2.0中v-for迭代语法的变化(key、index)
2018/03/06 Javascript
给localStorage设置一个过期时间的方法分享
2018/11/06 Javascript
JointJS流程图的绘制方法
2018/12/03 Javascript
详解vue-router导航守卫
2019/01/19 Javascript
ant-design-vue 快速避坑指南(推荐)
2020/01/21 Javascript
[43:47]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第一场 12.09
2020/12/11 DOTA
Python实现大文件排序的方法
2015/07/10 Python
Python爬虫包BeautifulSoup异常处理(二)
2018/06/17 Python
python 中文件输入输出及os模块对文件系统的操作方法
2018/08/27 Python
Python 实现输入任意多个数,并计算其平均值的例子
2019/07/16 Python
python单向循环链表原理与实现方法示例
2019/12/03 Python
Python3实现mysql连接和数据框的形成(实例代码)
2020/01/17 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
2020/04/30 Python
在django admin中配置搜索域是一个外键时的处理方法
2020/05/20 Python
python实现马丁策略的实例详解
2021/01/15 Python
捷克家电和家具购物网站:OKAY.cz
2020/07/23 全球购物
应届优秀本科大学毕业生自我鉴定
2014/01/21 职场文书
三八红旗手先进事迹材料
2014/05/13 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
关于战胜挫折的名言警句大全!
2019/07/05 职场文书
解决Golang time.Parse和time.Format的时区问题
2021/04/29 Golang
python获取对象信息的实例详解
2021/07/07 Python