学习笔记(一)——H5移动端

3 篇文章 0 订阅
2 篇文章 0 订阅
本文探讨了H5在移动端开发中遇到的问题,包括H5与原生APP的交互方式(如goModule和JSInterface),以及如何通过viewport-fit和CSS变量兼容手机的刘海屏设计。作者鼓励读者分享解决方案。
摘要由CSDN通过智能技术生成

H5移动端的那些问题



前言

本文主要记录归纳开发过程中移动端遇到的一些问题,解决方法大多从网上学习,如果你有更好的解决方法欢迎评论区交流。


一、H5与APP如何交互

goModule是自己定义跟App端交互的方法,名字自拟,可以传参也可以不传。

/** 获取用户设备型号 */
const userAgent = navigator.userAgent.toLowerCase();
/** 参数 */
const data = {};
/** 苹果 */
if (/(iphone|ipad|ipod|ios|macintosh)/i.test(navigator.userAgent)) {
   window.webkit.messageHandlers.goModule.postMessage(data);
}
/** 安卓 */
if (userAgent.includes('android')) {
   try {
       JSInterface.goModule(JSON.stringify(data));
  	} catch (e) {
     	window.JSInterface.goModule(JSON.stringify(data));
    }
}

二、H5如何兼容手机刘海屏

HTML文件在meta 设置viewport-fit=cover,然后根据自己的布局为DOM添加安全距离。

/** HTML */
<meta name="viewport"
    content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no,viewport-fit=cover">

/** style 区分安卓和苹果 */

/** 该方法适用于IOS */
/** @supports 特性查询,浏览器是否支持 */
/** constant要在env前面,从低版本开始兼容,top、bottom、left、right */

@supports ((height: constant(safe-area-inset-top)) or (height: env(safe-area-inset-top))) {
  .dom{
    padding-top:constant(safe-area-inset-top);
    padding-top: env(safe-area-inset-top);
  }

/** 安卓手机的兼容我选择让app传参给我设置,不然太多机型适配起来太麻烦,如果不传参想方便一些可以写固定值 */
/** 如何获得链接后面的参数自行查询 */
/** 我封装了一个getAllParams方法获取链接后面的参数,拿到之后使用setProperty设置一个属性保存值*/
let params = getAllParams();
document.documentElement.style.setProperty(
        '--android-status-bar-height',
        `${Number(params.aStatusHeight)}px`,
      );

/** 最后在css里面使用var获取属性值 */
.demo{
	 padding-top:var(--android-status-bar-height);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值