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 相关文章推荐
仿猪八戒网左下角的文字滚动效果
Oct 28 Javascript
js实现快速分享功能(你的文章分享工具)
Jun 25 Javascript
一个html5播放视频的video控件只支持android的默认格式mp4和3gp
May 08 Javascript
JavaScript中的parse()方法使用简介
Jun 12 Javascript
浅谈js和css内联外联注意事项
Jun 30 Javascript
基于JS+Canves实现点击按钮水波纹效果
Sep 15 Javascript
详解JS中的快速排序与冒泡
Jan 10 Javascript
canvas绘制多边形
Feb 24 Javascript
javascript实现多张图片左右无缝滚动效果
Mar 22 Javascript
JavaScript数据结构与算法之二叉树添加/删除节点操作示例
Mar 01 Javascript
关于layui的动态图标不显示的解决方法
Sep 04 Javascript
浅谈vue.watch的触发条件是什么
Nov 07 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中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
php 生成自动创建文件夹并上传文件的示例代码
2014/03/07 PHP
实例分析PHP将字符串转换成数字的方法
2019/01/27 PHP
PHP常用正则表达式精选(推荐)
2019/05/28 PHP
有趣的JavaScript数组长度问题代码说明
2011/01/20 Javascript
JQuery each()嵌套使用小结
2014/04/18 Javascript
jquery mobile的触控点击事件会多次触发问题的解决方法
2014/05/08 Javascript
Bootstrap每天必学之导航
2015/11/26 Javascript
angularjs 源码解析之injector
2016/08/22 Javascript
JavaScript 拖拽实例代码
2016/09/21 Javascript
Angularjs通过指令监听ng-repeat渲染完成后执行脚本的方法
2016/12/31 Javascript
jQuery树插件zTree使用方法详解
2017/05/02 jQuery
JS原生轮播图的简单实现(推荐)
2017/07/22 Javascript
在 Angular 中使用Chart.js 和 ng2-charts的示例代码
2017/08/17 Javascript
如何开发出更好的JavaScript模块
2017/12/22 Javascript
详解vue-cli+es6引入es5写的js(两种方法)
2019/04/19 Javascript
基于vue+element实现全局loading过程详解
2020/07/10 Javascript
JSON stringify方法原理及实例解析
2020/10/23 Javascript
Javascript 模拟mvc实现点餐程序案例详解
2020/12/24 Javascript
[32:17]完美世界DOTA2联赛循环赛LBZS vs Forest第二场 10月30日
2020/10/31 DOTA
Python程序员鲜为人知但你应该知道的17个问题
2014/06/04 Python
Python2.7简单连接与操作MySQL的方法
2016/04/27 Python
Python tkinter的grid布局及Text动态显示方法
2018/10/11 Python
python如何查看微信消息撤回
2018/11/27 Python
python学生管理系统
2019/01/30 Python
详解python3 + Scrapy爬虫学习之创建项目
2019/04/12 Python
树莓派使用USB摄像头和motion实现监控
2019/06/22 Python
Python函数中的可变长参数详解
2019/09/12 Python
Python any()函数的使用方法
2019/10/28 Python
DataFrame 数据合并实现(merge,join,concat)
2020/06/14 Python
JD Sports西班牙:英国领先的运动服装公司
2020/01/06 全球购物
数控技术专科生自我评价
2014/01/08 职场文书
大堂副理的岗位职责范文
2014/02/17 职场文书
建筑工地文明标语
2014/10/09 职场文书
公司向个人借款协议书范本
2014/10/09 职场文书
2014年销售工作总结
2014/12/01 职场文书