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实现的一个Flash滚动轮换显示图片代码生成器
Mar 14 Javascript
浅析XMLHttpRequest的缓存问题
Dec 13 Javascript
javascript 事件处理示例分享
Dec 31 Javascript
JS 作用域与作用域链详解
Apr 07 Javascript
JS实现弹性漂浮效果的广告代码
Sep 02 Javascript
JS实现仿FLASH效果的竖排导航代码
Sep 15 Javascript
node.js实现博客小爬虫的实例代码
Oct 08 Javascript
微信小程序 仿猫眼实现实例代码
Mar 14 Javascript
vue构建单页面应用实战
Apr 10 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
Jan 03 Javascript
vue首次赋值不触发watch的解决方法
Sep 11 Javascript
sharp.js安装过程中遇到的问题总结
Apr 02 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
VML绘图板②脚本--VMLgraph.js、XMLtool.js
2006/10/09 PHP
PHP中如何实现常用邮箱的基本判断
2014/01/07 PHP
PHP中curl_setopt函数用法实例分析
2015/04/16 PHP
php fseek函数读取大文件两种方法
2016/10/12 PHP
php将html转为图片的实现方法
2017/05/19 PHP
简单的代码实现jquery定时器
2013/11/17 Javascript
js图片实时加载提供网页打开速度
2014/09/11 Javascript
JS结合bootstrap实现基本的增删改查功能
2016/07/22 Javascript
jQuery Raty 一款不错的星级评分插件
2016/08/24 Javascript
滚动条的监听与内容随着滚动条动态加载的实现
2017/02/08 Javascript
微信小程序左滑删除效果的实现代码
2017/02/20 Javascript
ligerUI---ListBox(列表框可移动的实例)
2017/11/28 Javascript
bootstrap模态框关闭后清除模态框的数据方法
2018/08/10 Javascript
ES6 如何改变JS内置行为的代理与反射
2019/02/11 Javascript
VUE前后端学习tab写法实例
2019/08/06 Javascript
layui数据表格跨行自动合并的例子
2019/09/02 Javascript
vue获取form表单的值示例
2019/10/29 Javascript
ZK中使用JS读取客户端txt文件内容问题
2019/11/07 Javascript
Ant Design Pro 下实现文件下载的实现代码
2019/12/03 Javascript
vue自定义树状结构图的实现方法
2020/10/18 Javascript
[46:00]Ti4 冒泡赛第二轮LGD vs C9 2
2014/07/14 DOTA
python处理文本文件实现生成指定格式文件的方法
2014/07/31 Python
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
Python 登录网站详解及实例
2017/04/11 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
2018/08/16 Python
美国男士西装打折店:Jos. A. Bank
2017/11/13 全球购物
Topshop法国官网:英国快速时尚品牌
2018/04/08 全球购物
区域销售经理职责
2013/12/22 职场文书
一份报关员的职业规划范文
2014/01/08 职场文书
求职信需要的五点内容
2014/02/01 职场文书
2014年消防工作实施方案
2014/02/20 职场文书
人事专员职责
2014/02/22 职场文书
暑期社会实践心得体会
2014/09/02 职场文书
2014年度安全工作总结
2014/12/04 职场文书
爱护公物主题班会
2015/08/17 职场文书
Python字典和列表性能之间的比较
2021/06/07 Python