vue移动端html5页面根据屏幕适配的四种解决方法


Posted in Javascript onOctober 19, 2018

最近做了两个关于h5页面对接公众号的项目,不得不提打开微信浏览器内置地图导航的功能确实有点恶心。下次想起来了的话,进行总结分享一下如何处理。在vue移动端h5页面当中,其中适配是经常会遇到的问题,这块主要有死个方法可以适用。

方法一:引入淘宝开源的可伸缩布局方案

引入淘宝开源的可伸缩布局方案:https://github.com/amfe/lib-flexible(此处可点击)

淘宝的其实也和viewport的有点像,但是它主要是根据设备设备像素比设置scale的值,保持视口device-width始终等于设备物理像素,屏幕大小动态计算根字体大小,具体是将屏幕划分为10等分。这块也可以直接用js实现,后面会提到

具体引入和使用方法,移步github查看,非常详细。

方法二:viewport 的使用

github里边,有提到  viewport 的使用。我感觉这篇文章关于viewport 的介绍特别详细,包括比例、是否缩放等的属性介绍特别的详细,虽然文章的内容一大片的字看起来很多,但是请耐心看完,都是干货能很好的让你认识viewport。如果比较着急,请继续往下看总结图吧

关于 viewport 的,这块直接引用上面文章的内容,我感觉也是最干脆最直接的总结了吧

vue移动端html5页面根据屏幕适配的四种解决方法

方法三:使用js+viewport动态设置手动适配rem

我的编辑器是vscode,添加了插件cssrem自动转换

index.html

<!DOCTYPE html>
<html>
 <head>
 <meta charset="utf-8">
 <!-- <meta name="viewport" content="width=device-width,initial-scale=1.0"> -->
 <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
 <!-- 启用360浏览器的极速模式(webkit) -->
 <meta name="renderer" content="webkit">
 <!-- 避免IE使用兼容模式 -->
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <!-- 针对手持设备优化,主要是针对一些老的不识别viewport的浏览器,比如黑莓 -->
 <meta name="HandheldFriendly" content="true">
 <!-- 微软的老式浏览器 -->
 <meta name="MobileOptimized" content="320">
 <!-- uc强制竖屏 -->
 <meta name="screen-orientation" content="portrait">
 <!-- QQ强制竖屏 -->
 <meta name="x5-orientation" content="portrait">
 <!-- UC强制全屏 -->
 <meta name="full-screen" content="yes">
 <!-- QQ强制全屏 -->
 <meta name="x5-fullscreen" content="true">
 <!-- UC应用模式 -->
 <meta name="browsermode" content="application">
 <!-- QQ应用模式 -->
 <meta name="x5-page-mode" content="app">
 <!-- windows phone 点击无高光 -->
 <meta name="msapplication-tap-highlight" content="no">
 <meta content="telephone=no" name="format-detection" />
 <meta name="huaban" content="nopin" />
 <link rel="icon" type="image/x-icon" href="/favicon.ico" rel="external nofollow" >
 <title>新茶饮</title>
 <script src="/config.js"></script>
 <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
 </head>
 <body>
 <div id="app"></div>
 <!-- 
 在iphone 5 中1rem=16px; 
 html font-size =16px=1rem;
 -->
 <script>
 //得到手机屏幕的宽度
 let htmlWidth = document.documentElement.clientWidth || document.body.clientWidth;
 console.log('htmlWidth',htmlWidth)
 //得到html的Dom元素
 let htmlDom = document.getElementsByTagName('html')[0];
 // if(htmlWidth>640){//超过640大小的,字体根部都是16px
 // htmlWidth=640;
 // console.log('htmlWidth-true',htmlWidth)
 // }
 //设置根元素字体大小
 htmlDom.style.fontSize = htmlWidth / 40 + 'px';
 </script>
 </body>
</html>

方法四:根据css的媒体查询动态设置根部html字体大小

html {font-size: 625%; /*100 ÷ 16 × 100% = 625%*/}
@media screen and (min-width:360px) and (max-width:374px) and (orientation:portrait) {
 html { font-size: 703%; }
}
@media screen and (min-width:375px) and (max-width:383px) and (orientation:portrait) {
 html { font-size: 732.4%; }
}
@media screen and (min-width:384px) and (max-width:399px) and (orientation:portrait) {
 html { font-size: 750%; }
}
@media screen and (min-width:400px) and (max-width:413px) and (orientation:portrait) {
 html { font-size: 781.25%; }
}
@media screen and (min-width:414px) and (max-width:431px) and (orientation:portrait){
 html { font-size: 808.6%; }
}
@media screen and (min-width:432px) and (max-width:479px) and (orientation:portrait){
 html { font-size: 843.75%; }
}

总结

以上所述是小编给大家介绍的vue移动端html5页面根据屏幕适配的四种解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JS测试显示屏分辨率以及屏幕尺寸的方法
Nov 22 Javascript
JavaScript新窗口与子窗口传值详解
Feb 11 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
Dec 20 Javascript
seajs学习教程之基础篇
Oct 20 Javascript
bootstrap datetimepicker2.3.11时间插件使用
Nov 19 Javascript
纯JS单页面赛车游戏制作代码分享
Mar 03 Javascript
JavaScript中undefined和null的区别
May 03 Javascript
web前端页面生成exe可执行文件的方法
Feb 08 Javascript
改进 JavaScript 和 Rust 的互操作性并深入认识 wasm-bindgen 组件
Jul 13 Javascript
ionic3双击返回退出应用的方法
Sep 17 Javascript
JavaScript this指向相关原理及实例解析
Jul 10 Javascript
vue element el-transfer增加拖拽功能
Jan 15 Vue.js
Vue用v-for给循环标签自身属性添加属性值的方法
Oct 18 #Javascript
vue中v-for循环给标签属性赋值的方法
Oct 18 #Javascript
webstorm+vue初始化项目的方法
Oct 18 #Javascript
使用微信小程序开发弹出框应用实例详解
Oct 18 #Javascript
vue: WebStorm设置快速编译运行的方法
Oct 18 #Javascript
vue2.0 路由模式mode=&quot;history&quot;的作用
Oct 18 #Javascript
详解vue文件中使用echarts.js的两种方式
Oct 18 #Javascript
You might like
php中字符串和正则表达式详解
2014/10/23 PHP
php 输出json及显示json中的中文汉字详解及实例
2016/11/09 PHP
PHP _construct()函数讲解
2019/02/03 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
2019/09/30 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
2019/12/03 PHP
理解 JavaScript 预解析
2009/10/25 Javascript
jQuery实现用方向键控制层的上下左右移动
2013/01/13 Javascript
解析Jquery的LigerUI如何实现文件上传
2013/07/09 Javascript
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
2014/03/18 NodeJs
javascript中if和switch,==和===详解
2015/07/30 Javascript
js限制文本框只能输入中文的方法
2015/08/11 Javascript
jQuery实现带有上下控制按钮的简单多行滚屏效果代码
2015/09/04 Javascript
JavaScript与jQuery实现的闪烁输入效果
2016/02/18 Javascript
详解vue-Resource(与后端数据交互)
2017/01/16 Javascript
js Canvas绘制圆形时钟教程
2017/02/06 Javascript
react.js 父子组件数据绑定实时通讯的示例代码
2017/09/25 Javascript
Vue 换肤的示例实践
2018/01/23 Javascript
Node.js系列之安装配置与基本使用(1)
2019/08/30 Javascript
简单解决Python文件中文编码问题
2015/11/22 Python
python 连接sqlite及简单操作
2017/06/30 Python
利用python实现微信头像加红色数字功能
2018/03/26 Python
python组合无重复三位数的实例
2018/11/13 Python
Python数据存储之 h5py详解
2019/12/26 Python
Matplotlib绘制雷达图和三维图的示例代码
2020/01/07 Python
Python实现代码块儿折叠
2020/04/15 Python
Python QTimer实现多线程及QSS应用过程解析
2020/07/11 Python
美国顶级防滑鞋:Shoes For Crews
2017/03/27 全球购物
村庄绿化方案
2014/05/07 职场文书
营销计划书
2015/01/17 职场文书
病危通知书样本
2015/04/17 职场文书
劳动争议仲裁代理词
2015/05/25 职场文书
实习单位鉴定意见
2015/06/04 职场文书
雷锋的故事观后感
2015/06/10 职场文书
sql查询结果列拼接成逗号分隔的字符串方法
2021/05/25 SQL Server
HTML5页面音频自动播放的实现方式
2021/06/21 HTML / CSS
Vue实现跑马灯样式文字横向滚动
2021/11/23 Vue.js