uniapp調整webview的大小與位置解決遮擋問題的辦法
起因:
uniapp使用webview時默認的是全屏顯示
通過fullscreen="false"和webview-styles="style"兩個屬性可以控制大小,但是依然會擋住頂部的東西,只能以百分比的單位去控制寬高且無法控制位置
解決方案:
眾所周知,query.select().boundingClientRect可以獲取元素的高度,$getAppWebview可以獲取webview實例,uni.getSystemInfoSync()可以獲取屏幕高度,因此我們就可以通過控制webview定位來讓一些內容顯示出來,并且可以修改webview實例的高度,以下是我使用時的示例,僅供參考:
<view class="base_header"> <mHeader ref="base_header"></mHeader> </view> <view class="main"> <view class="bage_close"> <close color="#000" ref="bage_close"></close> </view> <web-view :fullscreen="false" src="xxx"></web-view> </view>
onMounted(() => { const instance = getCurrentInstance(); const query = uni.createSelectorQuery().in(instance); const { windowHeight } = uni.getSystemInfoSync(); // 屏幕高度(單位:px) console.log("屏幕高度:", windowHeight); if (instance && instance.proxy) { const currentWebview = instance.proxy.$scope?.$getAppWebview(); if (currentWebview) { nextTick(() => { setTimeout(() => { let closeHeight = 0; let baseHeaderHeight = 0; query .select(".base_header") .boundingClientRect((res) => { if (res && res.height) { baseHeaderHeight = res.height; } else { baseHeaderHeight = 100; // 默認高度 } }) .select(".bage_close") .boundingClientRect((res) => { if (res && res.height) { closeHeight = res.height + 100; } else { closeHeight = 100; // 默認高度 } }) .exec(() => { const totalTop = closeHeight + baseHeaderHeight; console.log("Calculated totalTop:", totalTop); const wv = currentWebview.children()?.[0]; if (wv) { wv.setStyle({ top: `${totalTop}px`, height: `${windowHeight-totalTop-30}px`, zIndex: -1, }); } }); }, 300); }); } } });
假設遇見了點擊事件問題,記得調整內容的層級(position: relative;z-index: 1000;)
總結
到此這篇關于uniapp調整webview的大小與位置解決遮擋問題的文章就介紹到這了,更多相關uniapp調整webview大小與位置內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
JavaScript實現(xiàn)動態(tài)添加,刪除行的方法實例詳解
這篇文章主要介紹了JavaScript實現(xiàn)動態(tài)添加,刪除行的方法,較為詳細的分析了javascript操作table表格實現(xiàn)針對表格元素動態(tài)操作的相關技巧,需要的朋友可以參考下2015-07-07微信小程序中的數(shù)據(jù)存儲實現(xiàn)方式
這篇文章主要介紹了微信小程序中的數(shù)據(jù)存儲實現(xiàn)方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-08-08JS+CSS制作DIV層可(最小化/拖拽/排序)功能實現(xiàn)代碼
DIV層最小化和隨意拖拽排序,很多的愛好者都想實現(xiàn)這個功能,小編整理搜集了一下,希望本文的知識點可以幫助到你2013-02-02JS函數(shù)式編程之純函數(shù)、柯里化以及組合函數(shù)
這篇文章主要介紹了JS函數(shù)式編程之純函數(shù)、柯里化以及組合函數(shù),文章對三個函數(shù)進行分析講解,內容也很容易理解,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2023-01-01javascript設計模式 – 模板方法模式原理與用法實例分析
這篇文章主要介紹了javascript設計模式 – 模板方法模式原理,結合實例形式分析了javascript模板方法模式相關概念、原理、用法及操作注意事項,需要的朋友可以參考下2020-04-04