vue-cli配置flexible过程详解


Posted in Javascript onJuly 04, 2019

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

安装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配置flexible过程详解

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

vue-cli配置flexible过程详解

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问题

在实际运用中发现对于外部引入的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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javaScript call 函数的用法说明
Apr 09 Javascript
上传的js验证(图片/文件的扩展名)
Apr 25 Javascript
Redis基本知识、安装、部署、配置笔记
Mar 05 Javascript
jQuery实现表格颜色交替显示的方法
Mar 09 Javascript
Bootstrap入门书籍之(一)排版
Feb 17 Javascript
js仿百度音乐全选操作
Jan 13 Javascript
浅谈vue2 单页面如何设置网页title
Nov 08 Javascript
浅谈AngularJs 双向绑定原理(数据绑定机制)
Dec 07 Javascript
Javascript中从学习bind到实现bind的过程
Jan 05 Javascript
JS实现同一DOM元素上onClick事件与onDblClick事件并存的解决方法
Jun 07 Javascript
Phaser.js实现简单的跑酷游戏附源码下载
Oct 26 Javascript
koa2 从入门到精通(小结)
Jul 23 Javascript
vue动态配置模板 'component is'代码
Jul 04 #Javascript
react 移动端实现列表左滑删除的示例代码
Jul 04 #Javascript
jQuery删除/清空指定元素的所有子节点实例代码
Jul 04 #jQuery
小程序中canvas的drawImage方法参数使用详解
Jul 04 #Javascript
vue如何限制只能输入正负数及小数
Jul 04 #Javascript
Vue项目中ESlint规范示例代码
Jul 04 #Javascript
你或许不知道的一些npm实用技巧
Jul 04 #Javascript
You might like
一个SQL管理员的web接口
2006/10/09 PHP
深入php数据采集的详解
2013/06/02 PHP
分享一段php获取linux服务器状态的代码
2014/05/27 PHP
codeigniter显示所有脚本执行时间的方法
2015/03/21 PHP
在Laravel中使用DataTables插件的方法
2018/05/29 PHP
关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦
2009/08/28 Javascript
javascript中String类的subString()方法和slice()方法
2011/05/24 Javascript
JavaScript 基础篇之运算符、语句(二)
2012/04/07 Javascript
关于JavaScript的面向对象和继承有利新手学习
2013/01/11 Javascript
jQuery之排序组件的深入解析
2013/06/19 Javascript
浏览器缩放检测的js代码
2014/09/28 Javascript
js实现完全自定义可带多级目录的网页鼠标右键菜单方法
2015/02/28 Javascript
JS中作用域和变量提升(hoisting)的深入理解
2016/10/31 Javascript
Angularjs通过指令监听ng-repeat渲染完成后执行脚本的方法
2016/12/31 Javascript
浅谈React Native 中组件的生命周期
2017/09/08 Javascript
Vue2.0+ElementUI实现表格翻页的实例
2017/10/23 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
2017/12/22 Javascript
vue中对象数组去重的实现
2020/02/06 Javascript
12 种使用Vue 的最佳做法
2020/03/30 Javascript
Python中的Classes和Metaclasses详解
2015/04/02 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
2017/07/17 Python
python将类似json的数据存储到MySQL中的实例
2019/07/12 Python
python实现本地批量ping多个IP的方法示例
2019/08/07 Python
Django使用中间件解决前后端同源策略问题
2019/09/02 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
2020/05/26 Python
Python如何把字典写入到CSV文件的方法示例
2020/08/23 Python
HTML5 canvas画图并保存成图片的jcanvas插件
2014/01/17 HTML / CSS
AmazeUI 列表的实现示例
2020/08/17 HTML / CSS
共产党员公开承诺践诺书
2014/05/28 职场文书
租房安全协议书
2014/08/20 职场文书
公司证明怎么写
2014/09/22 职场文书
反四风对照检查材料
2014/09/22 职场文书
考试作弊检讨书怎么写?
2014/12/21 职场文书
工作经验交流材料
2014/12/30 职场文书
2015年前台接待工作总结
2015/05/04 职场文书
python执行js代码的方法
2021/05/13 Python