详解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 相关文章推荐
精心挑选的15款优秀jQuery 本特效插件和教程
Aug 06 Javascript
JQuery入门—编写一个简单的JQuery应用案例
Jan 03 Javascript
jQuery标签编辑插件Tagit使用指南
Apr 21 Javascript
如何使用HTML5地理位置定位功能
Apr 27 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
Sep 16 Javascript
jQuery fancybox在ie浏览器下无法显示关闭按钮的解决办法
Feb 19 Javascript
jquery表单插件Autotab使用方法详解
Jun 24 Javascript
再谈Javascript中的基本类型和引用类型(推荐)
Jul 01 Javascript
form表单转Json提交的方法(推荐)
Sep 23 Javascript
通过命令行生成vue项目框架的方法
Jul 12 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
May 13 Javascript
JavaScript实现跟随鼠标移动的盒子
Jan 28 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
win7下memCache的安装过程(具体操作步骤)
2013/06/28 PHP
让CodeIgniter数据库缓存自动过期的处理的方法
2014/06/12 PHP
php使用GD实现颜色渐变实例
2015/06/02 PHP
Yii2使用swiftmailer发送邮件的方法
2016/05/03 PHP
网页中CDATA标记的说明
2010/09/12 Javascript
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(四)用地图块拼成大地图
2013/01/23 Javascript
JavaScript中的运算符种类及其规则介绍
2013/09/26 Javascript
JS小功能(checkbox实现全选和全取消)实例代码
2013/11/28 Javascript
浏览器图片选择预览、旋转、批量上传的JS代码实现
2013/12/04 Javascript
javascript实现tab切换的两个实例
2015/11/05 Javascript
JS取数字小数点后两位或n位的简单方法
2016/10/24 Javascript
node.js操作mongodb简单示例分享
2017/05/25 Javascript
AngularJS实现select的ng-options功能示例
2017/07/12 Javascript
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
2018/03/13 Javascript
vue组件表单数据回显验证及提交的实例代码
2018/08/30 Javascript
JavaScript简单实现的仿微博留言功能示例
2019/01/17 Javascript
[20:30]职业巡回赛回顾
2018/08/09 DOTA
[52:03]Secret vs VG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
举例详解Python中threading模块的几个常用方法
2015/06/18 Python
Java编程迭代地删除文件夹及其下的所有文件实例
2018/02/10 Python
Python实现字典按key或者value进行排序操作示例【sorted】
2019/05/03 Python
python3.7实现云之讯、聚合短信平台的短信发送功能
2019/09/26 Python
Python使用GitPython操作Git版本库的方法
2020/02/29 Python
python中有函数重载吗
2020/05/28 Python
使用OpenCV去除面积较小的连通域
2020/07/05 Python
墨西哥运动服饰和鞋网上商店:Netshoes墨西哥
2016/07/28 全球购物
大学英语演讲稿(中英文对照)
2014/01/14 职场文书
环保倡议书300字
2014/05/15 职场文书
商家认证委托书格式
2014/10/16 职场文书
护士求职简历自我评价
2015/03/10 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书
2019年暑期安全广播稿!
2019/07/03 职场文书
Go语言设计模式之结构型模式
2021/06/22 Golang
手把手教你使用TensorFlow2实现RNN
2021/07/15 Python
讲解MySQL增删改操作
2022/05/06 MySQL