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调用XML制作连动下拉列表框
Jun 25 Javascript
javascript面向对象之二 命名空间
Feb 08 Javascript
scrollWidth,clientWidth,offsetWidth的区别
Jan 13 Javascript
jQuery实现平滑滚动页面到指定锚点链接的方法
Jul 15 Javascript
jQuery实现Tab选项卡切换效果简单演示
Nov 23 Javascript
Jquery和BigFileUpload实现大文件上传及进度条显示
Jun 27 Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
Apr 25 Javascript
jQuery EasyUI 折叠面板accordion的使用实例(分享)
Dec 25 jQuery
webpack4 css打包压缩问题的解决
May 18 Javascript
详解原生JS回到顶部
Mar 25 Javascript
JS原型和原型链原理与用法实例详解
Feb 05 Javascript
通过实例了解JS执行上下文运行原理
Jun 17 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
层叠菜单的动态生成
2006/10/09 PHP
PHP 的几个配置文件函数
2006/12/21 PHP
在PHP中使用curl_init函数的说明
2010/11/02 PHP
php环境无法上传文件的解决方法
2014/04/30 PHP
php实现MySQL数据库备份与还原类实例
2014/12/09 PHP
Laravel事件监听器用法实例分析
2019/03/12 PHP
用javascript获得地址栏参数的两种方法
2006/11/08 Javascript
js简单实现标签云效果实例
2015/08/06 Javascript
jquery遍历json对象集合详解
2016/05/18 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
2016/09/20 Javascript
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
2017/01/12 NodeJs
js获取文件里面的所有文件名(实例)
2017/10/17 Javascript
关于Vue项目跨平台运行问题的解决方法
2018/09/18 Javascript
解决vuex刷新状态初始化的方法实现
2019/08/15 Javascript
vue自定义switch开关组件,实现样式可自行更改
2019/11/01 Javascript
详解Vue中的自定义指令
2020/12/07 Vue.js
[06:09]辉夜杯主赛事开幕式
2015/12/25 DOTA
[03:35]2018年度DOTA2最佳辅助位选手5号位-完美盛典
2018/12/17 DOTA
python pandas中对Series数据进行轴向连接的实例
2018/06/08 Python
Flask web开发处理POST请求实现(登录案例)
2018/07/26 Python
python使用matplotlib绘制热图
2018/11/07 Python
python使用zip将list转为json的方法
2018/12/31 Python
Python设计模式之模板方法模式实例详解
2019/01/17 Python
Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统
2019/09/05 Python
python中threading开启关闭线程操作
2020/05/02 Python
详解Python中的文件操作
2021/01/14 Python
html5+CSS3+JS实现七夕言情功能代码
2017/08/28 HTML / CSS
Parfumdreams芬兰:购买香水和化妆品
2021/02/13 全球购物
如何选择使用结构还是类
2014/05/30 面试题
幼儿园保教管理制度
2014/02/03 职场文书
银行党员批评与自我批评
2014/10/15 职场文书
因身体原因离职的辞职信范文
2015/05/12 职场文书
《风筝》教学反思
2016/02/23 职场文书
股权投资协议书
2016/03/23 职场文书
2019奶茶店创业计划书范本,值得你借鉴
2019/08/14 职场文书
angular4实现带搜索的下拉框
2022/03/25 Javascript