详解vue.js移动端配置flexible.js及注意事项


Posted in Javascript onApril 10, 2019

前言

最近在用vue做移动端项目,网上找了一些移动端适配的方案,个人觉得手淘团队flexible.js还是比较容易上手,在这里做下总结。

主体

flexible.js适配方案采用rem布局,根据屏幕分辨率大小不同,调整根元素html的font-size,从而达到每个元素宽高自动变化,适配不同屏幕

1.安装lib-flexible.js

npm install lib-flexible --save

1.在项目入口文件main.js中引入lib-flexible

import 'lib-flexible/flexible'

通过要以上两步,就完成了在vue项目使用lib-flexible来解决移动端适配了。

lib-flexible会自动在html的head中添加一个meta name="viewport"的标签,同时会自动设置html的font-size为屏幕宽度除以10,也就是1rem等于html根节点的font-size。假如设计稿的宽度是750px,此时1rem应该等于75px。假如量的某个元素的宽度是150px,那么在css里面定义这个元素的宽度就是 width: 2rem

这里需要注意几点:

1.检查一下html文件的head中,如果有 meta name="viewport"标签,需要将他注释掉,因为如果有这个标签的话,lib-flexible就会默认使用这个标签。而我们要使用lib-flexible自己生成的 meta name="viewport"来达到高清适配的效果。

2.因为html的font-size是根据屏幕宽度除以10计算出来的,所以我们需要设置页面的最大宽度是10rem。

3.如果每次从设计稿量出来的尺寸都手动去计算一下rem,就会导致我们效率比较慢,还有可能会计算错误,所以我们可以使用px2rem-loader自动将css中的px转成rem

使用 webpack 的 px2rem-loader,自动将px转换为rem

1.安装px2rem-loader

npm install px2rem-loader --save-dev

1.配置px2rem-loader

首先找到 build/utils.js文件,在utils.js中添加如下配置

详解vue.js移动端配置flexible.js及注意事项

找到generateLoaders方法,在函数里如下配置

详解vue.js移动端配置flexible.js及注意事项

1.px2rem 用法

安装px2rem后,再使用px上有些不同,大家可以参考px2rem官方介绍,下面简单介绍一下。

•直接写px,编译后会直接转化成rem —- 除开下面两种情况,其他长度用这个

•在px后面添加/*no*/,不会转化px,会原样输出。 —- 一般border需用这个

•在px后面添加/*px*/,会根据dpr的不同,生成三套代码。—- 一般字体需用这个

下面是本人写的实例代码,可以参考

原始代码:

.box{
  width: 150px;
  font-size: 28px; /*px*/
  border: 1px solid #ddd; /*no*/
}

编译后生成代码:

.box{
  width: 2rem;
  border: 1px solid #ddd;
}
[data-dpr="1"] .selector {
  font-size: 14px;
}
[data-dpr="2"] .selector {
  font-size: 28px;
}
[data-dpr="3"] .selector {
  font-size: 42px;
}

这样基本配置就完成了,重启项目就可以使用lib-flexible+rem编写移动端页面了

后缀

交个朋友,可以一起进阶前端学习

找到我: GitHub

总结

以上所述是小编给大家介绍的vue.js移动端配置flexible.js及注意事项,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
javascript parseInt 大改造
Sep 27 Javascript
Javascript UrlDecode函数代码
Jan 09 Javascript
jQuery表单验证插件formValidator(改进版)
Feb 03 Javascript
JavaSript中变量的作用域闭包的深入理解
May 12 Javascript
html文档中的location对象属性理解及常见的用法
Aug 13 Javascript
node.js中的fs.readlinkSync方法使用说明
Dec 17 Javascript
js实现点击向下展开的下拉菜单效果代码
Sep 01 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
Aug 20 Javascript
Easy UI动态树点击文字实现展开关闭功能
Sep 30 Javascript
安装vue-cli的简易过程
May 22 Javascript
微信小程序学习总结(二)样式、属性、模板操作分析
Jun 04 Javascript
vue 扩展现有组件的操作
Aug 14 Javascript
小程序分享模块超级详解(推荐)
Apr 10 #Javascript
关于JavaScript 数组你应该知道的事情(推荐)
Apr 10 #Javascript
Vue中computed、methods与watch的区别总结
Apr 10 #Javascript
JavaScript 性能提升之路(推荐)
Apr 10 #Javascript
详解vue-cli3 中跨域解决方案
Apr 10 #Javascript
js中数组常用方法总结(推荐)
Apr 09 #Javascript
JS隐藏号码中间4位代码实例
Apr 09 #Javascript
You might like
jQuery帮助之筛选查找 children([expr])
2011/01/31 Javascript
jQuery动态添加的元素绑定事件处理函数代码
2011/08/02 Javascript
html组件不可输入(只读)同时任何组件都有效
2013/04/01 Javascript
从数据结构的角度分析 for each in 比 for in 快的多
2013/07/07 Javascript
jquery text(),val(),html()方法区别总结
2013/11/04 Javascript
jquery控制display属性为none或block
2014/03/31 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
Javascript实现的简单右键菜单类
2015/09/23 Javascript
使用jQuery制作浮动工具栏的实例分享
2016/05/13 Javascript
JS中对Cookie的操作详解
2016/08/05 Javascript
详解微信小程序开发之城市选择器 城市切换
2017/01/17 Javascript
websocket+node.js实现实时聊天系统问题咨询
2017/05/17 Javascript
javascript获取指定区间范围随机数的方法
2017/09/08 Javascript
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
基于Vue3.0开发轻量级手机端弹框组件V3Popup的场景分析
2020/12/30 Vue.js
[48:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 VG vs KG
2018/03/31 DOTA
Python字符串格式化输出方法分析
2016/04/13 Python
matplotlib.pyplot画图并导出保存的实例
2019/12/07 Python
Python类中self参数用法详解
2020/02/13 Python
在ipython notebook中使用argparse方式
2020/04/20 Python
Pytest单元测试框架如何实现参数化
2020/09/05 Python
Python结合百度语音识别实现实时翻译软件的实现
2021/01/18 Python
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
英国领先的品牌珠宝和配件供应商:Acotis Jewellery
2018/03/07 全球购物
三八妇女节活动主持词
2014/03/17 职场文书
预备党员承诺书
2014/03/25 职场文书
教师业务培训方案
2014/05/01 职场文书
充分就业社区汇报材料
2014/05/07 职场文书
全国文明单位申报材料
2014/05/31 职场文书
主要负责人任命书
2014/06/06 职场文书
大学感恩节活动策划方案
2014/10/11 职场文书
2016国庆促销广告语
2016/01/28 职场文书
2019假期福利管理制度!
2019/07/15 职场文书
WebWorker 封装 JavaScript 沙箱详情
2021/11/02 Javascript
Redis Stream类型的使用详解
2021/11/11 Redis
Vue2项目中对百度地图的封装使用详解
2022/06/16 Vue.js