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 相关文章推荐
js压缩利器
Feb 20 Javascript
该如何加载google-analytics(或其他第三方)的JS
May 13 Javascript
Javascript判断对象是否相等实现代码
Mar 18 Javascript
基于JavaScript 类的使用详解
May 07 Javascript
jQuery实现div浮动层跟随页面滚动效果
Feb 11 Javascript
模拟用户点击弹出新页面不会被浏览器拦截
Apr 08 Javascript
关于javascript原型的修改与重写(覆盖)差别详解
Aug 31 Javascript
BootStrap实现手机端轮播图左右滑动事件
Oct 13 Javascript
解析jQueryEasyUI的使用
Nov 22 Javascript
ES6学习笔记之正则表达式和字符串正则方法分析
Apr 25 Javascript
Vue实现virtual-dom的原理简析
Jul 10 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
Sep 29 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
php连接oracle数据库及查询数据的方法
2014/12/29 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
2017/02/28 PHP
node.js Web应用框架Express入门指南
2014/05/28 Javascript
JS基于Ajax实现的网页Loading效果代码
2015/10/27 Javascript
延时加载JavaScript代码提高速度
2015/12/27 Javascript
jQuery下拉菜单的实现代码
2016/11/03 Javascript
vue init失败简单解决方法(终极版)
2017/12/22 Javascript
this在vue和小程序中的使用详解
2019/01/28 Javascript
Vue CLI 2.x搭建vue(目录最全分析)
2019/02/27 Javascript
原生js通过一行代码实现简易轮播图
2019/06/05 Javascript
vue 实现强制类型转换 数字类型转为字符串
2019/11/07 Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
2020/02/16 Javascript
理解JavaScript中的Proxy 与 Reflection API
2020/09/21 Javascript
JS实现鼠标移动拖尾
2020/12/27 Javascript
[59:15]EG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/29 DOTA
[54:26]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第一场 12.10
2020/12/12 DOTA
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
2017/12/12 Python
详解Python自建logging模块
2018/01/29 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
2018/10/26 Python
Python中Unittest框架的具体使用
2019/08/27 Python
Python字符串hashlib加密模块使用案例
2020/03/10 Python
python函数map()和partial()的知识点总结
2020/05/26 Python
Python Sqlalchemy如何实现select for update
2020/10/12 Python
英国独特的时尚和生活方式品牌:JOY
2018/03/17 全球购物
jurlique茱莉蔻英国官网:澳洲天然护肤品
2018/08/03 全球购物
Europcar德国:全球汽车租赁领域的领导者
2018/08/15 全球购物
某公司Java工程师面试题笔试题
2016/03/27 面试题
护理专业毕业生自我鉴定
2013/10/08 职场文书
人事档案接收函
2014/01/12 职场文书
银行类自荐信
2014/02/04 职场文书
护士毕业生自我鉴定
2014/02/08 职场文书
售后服务承诺书模板
2014/05/21 职场文书
离婚协议书标准格式
2014/10/04 职场文书
青春雷锋观后感
2015/06/10 职场文书
法人代表资格证明书
2015/06/18 职场文书
导游词之泉州崇武古城
2019/12/20 职场文书