uniapp調(diào)整webview的大小與位置解決遮擋問題的辦法
起因:
uniapp使用webview時(shí)默認(rèn)的是全屏顯示
通過fullscreen="false"和webview-styles="style"兩個(gè)屬性可以控制大小,但是依然會(huì)擋住頂部的東西,只能以百分比的單位去控制寬高且無法控制位置
解決方案:
眾所周知,query.select().boundingClientRect可以獲取元素的高度,$getAppWebview可以獲取webview實(shí)例,uni.getSystemInfoSync()可以獲取屏幕高度,因此我們就可以通過控制webview定位來讓一些內(nèi)容顯示出來,并且可以修改webview實(shí)例的高度,以下是我使用時(shí)的示例,僅供參考:
<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; // 默認(rèn)高度 } }) .select(".bage_close") .boundingClientRect((res) => { if (res && res.height) { closeHeight = res.height + 100; } else { closeHeight = 100; // 默認(rèn)高度 } }) .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); }); } } });
假設(shè)遇見了點(diǎn)擊事件問題,記得調(diào)整內(nèi)容的層級(jí)(position: relative;z-index: 1000;)
總結(jié)
到此這篇關(guān)于uniapp調(diào)整webview的大小與位置解決遮擋問題的文章就介紹到這了,更多相關(guān)uniapp調(diào)整webview大小與位置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript數(shù)組的棧方法與隊(duì)列方法詳解
這篇文章主要介紹了JavaScript數(shù)組的棧方法與隊(duì)列方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-05-05JavaScript實(shí)現(xiàn)動(dòng)態(tài)添加,刪除行的方法實(shí)例詳解
這篇文章主要介紹了JavaScript實(shí)現(xiàn)動(dòng)態(tài)添加,刪除行的方法,較為詳細(xì)的分析了javascript操作table表格實(shí)現(xiàn)針對(duì)表格元素動(dòng)態(tài)操作的相關(guān)技巧,需要的朋友可以參考下2015-07-07js實(shí)現(xiàn)的后臺(tái)左側(cè)管理菜單代碼
這篇文章主要介紹了js實(shí)現(xiàn)的后臺(tái)左側(cè)管理菜單代碼,可實(shí)現(xiàn)美觀大氣的左側(cè)折疊菜單效果,涉及JavaScript基于鼠標(biāo)事件動(dòng)態(tài)操作頁面元素樣式變換的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-09-09JS中用try catch對(duì)代碼運(yùn)行的性能影響分析
要捕獲JavaScript代碼中的異常一般會(huì)采用 try catch,不過try catch的使用是否是對(duì)代碼性能產(chǎn)生影響呢?答案是肯定有的,但是有多少不得而知。下面這篇文章就給大家詳細(xì)介紹了在JS中用try catch對(duì)代碼運(yùn)行的性能影響,有需要的朋友們可以參考借鑒。2016-12-12微信小程序中的數(shù)據(jù)存儲(chǔ)實(shí)現(xiàn)方式
這篇文章主要介紹了微信小程序中的數(shù)據(jù)存儲(chǔ)實(shí)現(xiàn)方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-08-08JS+CSS制作DIV層可(最小化/拖拽/排序)功能實(shí)現(xiàn)代碼
DIV層最小化和隨意拖拽排序,很多的愛好者都想實(shí)現(xiàn)這個(gè)功能,小編整理搜集了一下,希望本文的知識(shí)點(diǎn)可以幫助到你2013-02-02JS函數(shù)式編程之純函數(shù)、柯里化以及組合函數(shù)
這篇文章主要介紹了JS函數(shù)式編程之純函數(shù)、柯里化以及組合函數(shù),文章對(duì)三個(gè)函數(shù)進(jìn)行分析講解,內(nèi)容也很容易理解,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-01-01JavaScript原型鏈與繼承操作實(shí)例總結(jié)
這篇文章主要介紹了JavaScript原型鏈與繼承操作,結(jié)合實(shí)例形式總結(jié)分析了javascript原形鏈與繼承的相關(guān)概念、使用方法及操作注意事項(xiàng),需要的朋友可以參考下2018-08-08javascript設(shè)計(jì)模式 – 模板方法模式原理與用法實(shí)例分析
這篇文章主要介紹了javascript設(shè)計(jì)模式 – 模板方法模式原理,結(jié)合實(shí)例形式分析了javascript模板方法模式相關(guān)概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下2020-04-04