前沿
在做和原生IOS和android 的H5頁面 時候 會有些交互上的差體驗 。
1.在iOS上頁面回彈效果 禁止
解決方法:
必須在最外層元素上 或者在 body ,html 添加
html, body { width: 100%; height: 100vh; position: fixed; top: 0; bottom: 0; left: 0; right: 0; }
使用 fixed 布局 是為了固定位置,但是這樣就會導致
iOS H5頁面在滑動到底部的時候 不能滑動了,會不好使會卡住,
親自 實驗 有下面2個方案:
第一種方案:
1. jQuery 項目 引入inobounce 的js
地址 https://github.com/lazd/iNoBounce
<script src="inobounce.js"></script>
在你需要的滾動的元素上 添加 下方CSS
overflow: auto;
-webkit-overflow-scrolling: touch;
2. vue , react 項目中
下載 npm install inobounce -s
import inobounce from 'inobounce' export default { data() { return { } }, mounted() { }, created() { let u = navigator.userAgent if (u.indexOf('iPhone') > -1) { inobounce.enable() } }, beforeDestroy() { inobounce.disable() }, methods: { } } </script>
(說明: 這個方法只適用 沒有多層彈出框的 ,就只限在一層的 H5上,不然還是有問題),嘗試改動源碼 依舊沒有用,有點頭疼
第二種方案:
在body上添加CSS屬性: 這個安全區域
body { padding-top: env(safe-area-inset-top); padding-left: env(safe-area-inset-left); padding-right: env(safe-area-inset-right); padding-bottom: env(safe-area-inset-bottom); }
第二張方案應該是最實用的 基本都解決了,推薦使用
2. iOS 上 把微信上把字體調大,加載頁面會先縮小后放大
解決方案:
在iOS上
在跟目錄的 CSS 上 寫
body { -webkit-text-size-adjust: 100% !important; text-size-adjust: 100% !important; -moz-text-size-adjust: 100% !important; }
Android 只能通過js 調整:
<script> (function () { if (typeof WeixinJSBridge == "object" && typeof WeixinJSBridge.invoke == "function") { handleFontSize(); } else { if (document.addEventListener) { document.addEventListener("WeixinJSBridgeReady", handleFontSize, false); } else if (document.attachEvent) { document.attachEvent("WeixinJSBridgeReady", handleFontSize); document.attachEvent("onWeixinJSBridgeReady", handleFontSize); } } function handleFontSize() { WeixinJSBridge.invoke('setFontSizeCallback', { 'fontSize': 0 }); WeixinJSBridge.on('menu:setfont', function () { WeixinJSBridge.invoke('setFontSizeCallback', { 'fontSize': 0 }); }); } })(); </script>
先更新到這些,之后在更新,希望能幫助到開放