基于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 相关文章推荐
Code:findPosX 和 findPosY
Dec 20 Javascript
jQuery写的日历(包括日历的样式及功能)
Apr 23 Javascript
JavaScript中的函数重载深入理解
Aug 04 Javascript
jQuery修改li下的样式以及li下的img的src的值的方法
Nov 02 Javascript
jQuery自动完成插件completer附源码下载
Jan 04 Javascript
酷炫jQuery全屏3D焦点图动画效果
Mar 22 Javascript
JavaScript触发onScroll事件的函数节流详解
Dec 14 Javascript
AngularJS表格样式简单设置方法示例
Mar 03 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
Mar 14 Javascript
vue+canvas实现炫酷时钟效果的倒计时插件(已发布到npm的vue2插件,开箱即用)
Nov 05 Javascript
JS如何生成随机验证码
Mar 02 Javascript
Javascript ParentNode和ChildNode接口原理解析
Mar 16 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
15种PHP Encoder的比较
2007/03/06 PHP
PHP如何解决网站大流量与高并发的问题
2011/06/25 PHP
PHP下通过QRCode类库创建中间带网站LOGO的二维码
2014/07/12 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
2014/11/22 PHP
(仅IE下有效)关于checkbox 三态
2007/05/12 Javascript
wordpress之js库集合研究介绍
2007/08/17 Javascript
javascript全局变量封装模块实现代码
2012/11/28 Javascript
js中parseInt函数浅谈
2013/07/31 Javascript
javascript跨浏览器的属性判断方法
2014/03/16 Javascript
使用Node.js为其他程序编写扩展的基本方法
2015/06/23 Javascript
javascript文件加载管理简单实现方法
2015/07/25 Javascript
js倒计时抢购实例
2015/12/20 Javascript
jQuery实用密码强度检测
2017/03/02 Javascript
Vue.js教程之axios与网络传输的学习实践
2017/04/29 Javascript
新手vue构建单页面应用实例代码
2017/09/18 Javascript
简化vuex的状态管理方案的方法
2018/06/02 Javascript
vue项目首屏加载时间优化实战
2019/04/23 Javascript
python中getaddrinfo()基本用法实例分析
2015/06/28 Python
python with提前退出遇到的坑与解决方案
2018/01/05 Python
Python对数据进行插值和下采样的方法
2018/07/03 Python
对python调用RPC接口的实例详解
2019/01/03 Python
详解Python网络框架Django和Scrapy安装指南
2019/04/01 Python
Django 项目重命名的实现步骤解析
2019/08/14 Python
Django--权限Permissions的例子
2019/08/28 Python
在pandas中遍历DataFrame行的实现方法
2019/10/23 Python
pandas apply多线程实现代码
2020/08/17 Python
Python中Selenium模块的使用详解
2020/10/09 Python
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
美国Jeep配件购物网站:Morris 4×4 Center
2019/05/01 全球购物
厨房工作人员岗位职责
2013/11/15 职场文书
美术专业个人自我评价
2014/01/18 职场文书
经典婚礼主持词
2014/03/13 职场文书
高中校园广播稿
2014/10/21 职场文书
2015年党员个人自我评价
2015/03/03 职场文书
趣味运动会简讯
2015/07/20 职场文书
python 学习GCN图卷积神经网络
2022/05/11 Python