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面向对象程序设计三 原型模式(上)
Dec 21 Javascript
解析jQuery与其它js(Prototype)库兼容共存
Jul 04 Javascript
href下载文件根据id取url并下载
May 28 Javascript
jscript读写二进制文件的方法
Apr 22 Javascript
动态加载jQuery的方法
Jun 16 Javascript
在 Express 中使用模板引擎
Dec 10 Javascript
JavaScript对象引用与赋值实例详解
Mar 15 Javascript
使用MUI框架模拟手机端的下拉刷新和上拉加载功能
Sep 04 Javascript
js实现固定区域内的不重叠随机圆
Oct 24 Javascript
浅析微信小程序自定义日历组件及flex布局最后一行对齐问题
Oct 29 Javascript
Vue 使用iframe引用html页面实现vue和html页面方法的调用操作
Nov 16 Javascript
10分钟学会js处理json的常用方法
Dec 06 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中看实例学正则表达式
2006/12/25 PHP
浅谈PHP 闭包特性在实际应用中的问题
2009/10/30 PHP
PHP中通过HTTP_USER_AGENT判断是否为手机移动终端的函数代码
2013/02/14 PHP
php使用date和strtotime函数输出指定日期的方法
2014/11/14 PHP
php实时倒计时功能实现方法详解
2017/02/27 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
Yii2框架数据验证操作实例详解
2018/05/02 PHP
javascript中的new使用
2010/03/20 Javascript
jquery ajax请求实例深入解析
2012/11/26 Javascript
火狐textarea输入法的bug的触发及解决
2013/07/24 Javascript
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
2014/10/16 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
2016/10/08 Javascript
require.js+vue开发微信上传图片组件
2016/10/27 Javascript
原生JS实现几个常用DOM操作API实例
2017/01/19 Javascript
jQuery实现的电子时钟效果完整示例
2018/04/28 jQuery
详解Angular5 路由传参的3种方法
2018/04/28 Javascript
Vue+element 解决浏览器自动填充记住的账号密码问题
2019/06/11 Javascript
vue 实现走马灯效果
2019/10/28 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
2020/12/07 Javascript
Python Web框架Flask中使用百度云存储BCS实例
2015/02/08 Python
Python实现配置文件备份的方法
2015/07/30 Python
python与php实现分割文件代码
2017/03/06 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
2018/05/24 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
Python后台管理员管理前台会员信息的讲解
2019/01/28 Python
pytorch加载自定义网络权重的实现
2020/01/07 Python
Python如何实现爬取B站视频
2020/05/20 Python
《天安门广场》教学反思
2014/04/23 职场文书
地质灾害防治方案
2014/05/14 职场文书
意外伤害赔偿协议书范文
2014/09/23 职场文书
教师对照四风自我剖析材料
2014/09/30 职场文书
群众路线教育实践活动整改落实情况汇报
2014/10/28 职场文书
离婚财产分割协议书
2015/08/11 职场文书
小组口号霸气押韵
2015/12/24 职场文书
课改心得体会范文
2016/01/25 职场文书
详解Go语言运用广度优先搜索走迷宫
2021/06/23 Python