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是否可以跨文件同时控制多个iframe页面的应用技巧
Dec 16 Javascript
js字符编码函数区别分析
Jun 05 Javascript
JavaScript编程中的Promise使用大全
Jul 28 Javascript
基于jQuery通过jQuery.form.js插件使用ajax提交form表单
Aug 17 Javascript
一步步教大家编写酷炫的导航栏js+css实现
Mar 14 Javascript
js enter键激发事件实例代码
Aug 17 Javascript
Javascript中浏览器窗口的基本操作总结
Aug 18 Javascript
jQuery实现字符串全部替换的方法
Dec 12 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
Dec 14 Javascript
JavaScript基于Dom操作实现查找、修改HTML元素的内容及属性的方法
Jan 20 Javascript
浅谈vue的iview列表table render函数设置DOM属性值的方法
Sep 30 Javascript
详解node nvm进行node多版本管理
Oct 21 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 str_pad() 将字符串填充成指定长度的字符串
2010/02/23 PHP
用php解析html的实现代码
2011/08/08 PHP
php的debug相关函数用法示例
2016/07/11 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
2016/11/25 PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
2017/12/13 PHP
Javascript 自适应高度的Tab选项卡
2011/04/05 Javascript
Javascript实现DIV滚动自动滚动到底部的代码
2012/03/01 Javascript
JS 添加网页桌面快捷方式的代码详细整理
2012/12/27 Javascript
js获取网页可见区域、正文以及屏幕分辨率的高度
2014/05/15 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
2014/10/11 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
2016/03/01 Javascript
jQuery实现下拉框功能实例代码
2016/05/06 Javascript
NodeJS测试框架mocha入门教程
2017/03/28 NodeJs
js学习总结之DOM2兼容处理重复问题的解决方法
2017/07/27 Javascript
对Angular中单向数据流的深入理解
2018/03/31 Javascript
JavaScript使用math.js进行精确计算操作示例
2018/06/19 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
vue 组件间的通信之子组件向父组件传值的方式
2020/07/29 Javascript
Python pickle模块用法实例分析
2015/05/27 Python
高效测试用例组织算法pairwise之Python实现方法
2017/07/19 Python
人机交互程序 python实现人机对话
2017/11/14 Python
Python使用base64模块进行二进制数据编码详解
2018/01/11 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
django 多对多表的创建和插入代码实现
2019/09/09 Python
Python中的 ansible 动态Inventory 脚本
2020/01/19 Python
python使用nibabel和sitk读取保存nii.gz文件实例
2020/07/01 Python
Python求区间正整数内所有素数之和的方法实例
2020/10/13 Python
详解anaconda安装步骤
2020/11/23 Python
去除python中的字符串空格的简单方法
2020/12/22 Python
公司前台辞职报告
2014/01/19 职场文书
大学四年个人自我小结
2014/03/05 职场文书
学生会竞选演讲稿
2014/04/24 职场文书
2014年学生会主席工作总结
2014/11/07 职场文书
护士辞职信怎么写
2015/02/27 职场文书
关于战胜挫折的名言警句大全!
2019/07/05 职场文书
配置nginx 重定向到系统维护页面
2021/06/08 Servers