详解vue中移动端自适应方案


Posted in Javascript onMay 05, 2019

方案1:

直接引入js  (自己 写的动态改变fontsize的js)

function htRem() {
	  var ww = document.documentElement.clientWidth;
	  if (ww > 750) {
	    ww = 750;
	  }
	  document.documentElement.style.fontSize = ww / 7.5 + "px";
	}
	htRem();
	window.onresize = function() {
	  htRem();
	};

在main.js中import引入即可
方案二:手淘的 lib-flexible + rem

配置 flexible

安装 lib-flexible

在命令行中运行如下安装:

npm i lib-flexible --save

引入 lib-flexible

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

// main.js
import 'lib-flexible'

添加 meta 标签

在项目根目录的 index.html 中添加如下 meta

<meta name="viewport" content="width=device-width, initial-scale=1.0">

px 转 rem

实际开发中,我们通过设计稿得到的值单位是 px,所以要将 px 转换成 rem 再写进样式中。
将 px 转换成 rem 我们将使用 px2rem 这个工具,它有 webpack 的 loader:px2rem-loader

安装 px2rem-loader

在命令行中运行如下安装:

npm i px2rem-loade --save-dev

配置 px2rem-loade

在 vue-cli 生成的 webpack 配置中,vue-loader 的 options 和其他样式文件 loader 最终是都是由 build/utils.js 里的一个方法生成的。

我们只需在 cssLoader 后再加上一个 px2remLoader 即可,px2rem-loader 的 remUnit 选项意思是 1rem=多少像素,结合 lib-flexible 的方案,我们将 px2remLoader 的 options.remUnit 设置成设计稿宽度的 1/10,这里我们假设设计稿宽为 750px。

// utils.js
var cssLoader = {
loader: 'css-loader',
options: {
minimize: process.env.NODE_ENV === 'production',
sourceMap: options.sourceMap
}
}
var px2remLoader = {
loader: 'px2rem-loader',
options: {
remUnit: 75
}
}
// ...

并放进 loaders 数组中

// utils.js
function generateLoaders(loader, loaderOptions) {
var loaders = [cssLoader, px2remLoader]
// ...

修改配置后需要重启,然后我们在组件中写单位直接写 px,设计稿量多少就可以写多少了,舒服多了。

以上所述是小编给大家介绍的vue移动端自适应详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Jquery ajax传递复杂参数给WebService的实现代码
Aug 08 Javascript
关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置
Apr 17 Javascript
JavaScript获取指定元素位置的方法
Apr 08 Javascript
jQuery实现带遮罩层效果的blockUI弹出层示例【附demo源码下载】
Sep 14 Javascript
jquery 实现复选框的全选操作实例代码
Jan 24 Javascript
Angular之指令Directive用法详解
Mar 01 Javascript
AngularJS使用拦截器实现的loading功能完整实例
May 17 Javascript
Vue的Flux框架之Vuex状态管理器
Jul 30 Javascript
vue中使用protobuf的过程记录
Oct 26 Javascript
如何为vuex实现带参数的 getter和state.commit
Jan 04 Javascript
iview form清除校验状态的实现
Sep 19 Javascript
JS数组索引检测中的数据类型问题详解
Jan 11 Javascript
解决ie11 SCRIPT5011:不能执行已释放Script的代码问题
May 05 #Javascript
彻底揭秘keep-alive原理(小结)
May 05 #Javascript
angular4+百分比进度显示插件用法示例
May 05 #Javascript
vuejs数据超出单行显示更多,点击展开剩余数据实例
May 05 #Javascript
Vue+Express实现登录状态权限验证的示例代码
May 05 #Javascript
微信小程序实现发送模板消息功能示例【通过openid推送消息给用户】
May 05 #Javascript
浅谈Node 异步IO和事件循环
May 05 #Javascript
You might like
在PHP中使用curl_init函数的说明
2010/11/02 PHP
php json_encode值中大括号与花括号区别
2013/09/30 PHP
PHP调用JAVA的WebService简单实例
2014/03/11 PHP
编写PHP脚本使WordPress的主题支持Widget侧边栏
2015/12/14 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
Yii Framework框架开发微信公众平台示例
2020/04/26 PHP
iframe的onreadystatechange事件在firefox下的使用
2014/04/16 Javascript
理解javascript中Map代替循环
2016/02/26 Javascript
基于javascript实现简单的抽奖系统
2020/04/15 Javascript
基于Jquery插件实现跨域异步上传文件功能
2016/04/26 Javascript
基于BootStrap Metronic开发框架经验小结【五】Bootstrap File Input文件上传插件的用法详解
2016/05/12 Javascript
Ionic 2 实现列表滑动删除按钮的方法
2017/01/22 Javascript
ES6新特性三: Generator(生成器)函数详解
2017/04/21 Javascript
微信小程序倒计时功能实现代码
2017/11/09 Javascript
JS文件中加载jquery.js的实例代码
2018/05/05 jQuery
jQuery实现图片下载代码
2019/07/18 jQuery
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
[11:01]2014DOTA2西雅图邀请赛 冷冷带你探秘威斯汀
2014/07/08 DOTA
[40:10]2015国际邀请赛全明星表演赛
2015/08/07 DOTA
Python接收Gmail新邮件并发送到gtalk的方法
2015/03/10 Python
python3实现指定目录下文件sha256及文件大小统计
2019/02/25 Python
python中append实例用法总结
2019/07/30 Python
python实现的登录与提交表单数据功能示例
2019/09/25 Python
python 采用paramiko 远程执行命令及报错解决
2019/10/21 Python
Django 创建后台,配置sqlite3教程
2019/11/18 Python
Python 如何展开嵌套的序列
2020/08/01 Python
Python实现七个基本算法的实例代码
2020/10/08 Python
python实现逻辑回归的示例
2020/10/09 Python
纯HTML5+CSS3制作图片旋转
2016/01/12 HTML / CSS
德国箱包网上商店:koffer24.de
2016/07/27 全球购物
Oracle性能调优原则
2012/05/03 面试题
总经理文秘岗位职责
2014/02/03 职场文书
常住证明范本
2015/06/23 职场文书
新学期家长寄语2016
2015/12/03 职场文书