基于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 相关文章推荐
IE 上下滚动展示模仿Marquee机制
Dec 20 Javascript
JS动态添加option和删除option(附实例代码)
Apr 01 Javascript
Jquery跳到页面指定位置的方法
May 12 Javascript
node.js中的console.log方法使用说明
Dec 09 Javascript
firefox浏览器用jquery.uploadify插件上传时报HTTP 302错误
Mar 01 Javascript
简单介绍JavaScript中字符串创建的基本方法
Jul 07 Javascript
jQuery动画效果图片轮播特效
Jan 12 Javascript
JS实现直接运行html代码的方法
Mar 13 Javascript
微信小程序授权获取用户详细信息openid的实例详解
Sep 20 Javascript
详解 vue better-scroll滚动插件排坑
Feb 08 Javascript
详解微信小程序调起键盘性能优化
Jul 24 Javascript
原生js通过一行代码实现简易轮播图
Jun 05 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 文件上传代码(限制jpg文件)
2010/01/05 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
2014/12/15 PHP
浅谈使用PHP开发微信支付的流程
2015/10/04 PHP
PHP验证码类ValidateCode解析
2017/01/07 PHP
PHP实现读取文件夹及批量重命名文件操作示例
2019/04/15 PHP
PHP实现简易用户登录系统
2020/07/10 PHP
javascript 年月日联动实现核心代码
2009/12/21 Javascript
JavaScript 精粹读书笔记(1,2)
2010/02/07 Javascript
JavaScript 字符串处理函数使用小结
2010/12/02 Javascript
js 获取屏幕各种宽高的方法(浏览器兼容)
2013/05/15 Javascript
js实现目录定位正文示例
2013/11/14 Javascript
javascript获取web应用根目录的方法
2014/02/12 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
2015/12/02 Javascript
javascript精确统计网站访问量实例代码
2015/12/19 Javascript
详解vue+css3做交互特效的方法
2017/11/20 Javascript
vuex 实现getter值赋值给vue组件里的data示例
2019/11/05 Javascript
Python中的命令行参数解析工具之docopt详解
2017/03/27 Python
Python中shutil模块的学习笔记教程
2017/04/04 Python
python2.7+selenium2实现淘宝滑块自动认证功能
2018/02/24 Python
python 实现绘制整齐的表格
2019/11/18 Python
python使用Geany编辑器配置方法
2020/02/21 Python
python字符串判断密码强弱
2020/03/18 Python
Python装饰器实现方法及应用场景详解
2020/03/26 Python
Python生成随机验证码代码实例解析
2020/06/09 Python
基于python获取本地时间并转换时间戳和日期格式
2020/10/27 Python
python 写一个文件分发小程序
2020/12/05 Python
使用CSS3 制作一个material-design 风格登录界面实例
2016/12/12 HTML / CSS
台湾东南旅游社网站:东南旅游
2019/02/11 全球购物
兰蔻俄罗斯官方网站:Lancome俄罗斯
2019/12/09 全球购物
学校运动会开幕演讲稿
2014/01/04 职场文书
产品发布会策划方案
2014/05/12 职场文书
领导干部群众路线剖析材料
2014/10/09 职场文书
临时工聘用合同协议书
2014/10/29 职场文书
干货:如何写好工作计划!
2019/05/17 职场文书
opencv-python图像配准(匹配和叠加)的实现
2021/06/23 Python
SpringDataJPA在Entity中常用的注解介绍
2021/12/06 Java/Android