uniapp?H5遮罩層、彈窗以及蒙層滾動(dòng)穿透/滑動(dòng)穿透解決辦法
前言
首先來一句:uniapp 一端開發(fā),多端BUG近期項(xiàng)目用到了uniapp + uview 就出現(xiàn)了很多奇怪的問題,滾動(dòng)穿透問題更是奇怪且多發(fā)。不論是彈窗,蒙層,遮罩,或者普通的元素置頂都會(huì)出現(xiàn),也是解決了很久,特地記錄一下,希望對(duì)各位’牛馬’有用
一、解決過程
第一次:在uview 組件(時(shí)間組件)u-datetime-picker上碰到,通過百度也是找到了解決方法
// 在父級(jí)元素添加重寫滾動(dòng)事件 @touchmove.stop.prevent="() => { }" <view @touchmove.stop.prevent="() => { }"> <u-datetime-picker :show="isOpenDateHMS" :minDate="getMillisecond()" @confirm="closeDateHMS" mode="datetime"> </u-datetime-picker> </view>
第二次:是寫了自定義的遮罩層,居然這個(gè)問題又來了
但是使用了第一次的方法@touchmove居然不生效(?ε?`)
<template> <view class="container"> <view class="shade" v-if="canEdite"></view> </view> </template> <style scoped lang="scss"> @import "common.scss"; .shade{ position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: transparent !important; z-index: 9999; } </style>
怎么辦呢,繼續(xù)找唄,還真找到了,他支持page-meta
<template> <view class="container"> <page-meta :page-style="spanStyle"></page-meta> <view class="shade" v-if="canEdite"></view> </view> </template> <script > export default { data() { return { spanStyle:"overflow:auto" } }, methods: { upPop(canEdite){ if(canEdite){ this.spanStyle="overflow:hidden"; }else{ this.spanStyle="overflow:auto"; } } } } </script >
linkstart~~~~ 運(yùn)行,?。∈裁窗?,它并沒有生效,又弄了很長(zhǎng)時(shí)間,但是項(xiàng)目又比較急就只能擱置了,后面在花時(shí)間弄吧
第三次:它它它真滴又出現(xiàn)啦,不過這次是在其他地方uview 彈出層組件 u-popup
我心里想同樣是uview的東西那寫哪個(gè)也應(yīng)該會(huì)生效 --@touchmove,但是它辜負(fù)了我的信任,居然沒有用
完了客戶又在提這個(gè)問題了,怎么辦呢,誰讓客戶是上帝呢,智障客戶又不是不能用,只能在研究唄,又是2個(gè)小時(shí),當(dāng)要我放棄時(shí)終于看到了希望,發(fā)現(xiàn)這個(gè)鬼玩意的滾動(dòng)條居然是在整個(gè)page上的,試著在控制臺(tái)寫了點(diǎn)樣式居然生效了,這不就是轉(zhuǎn)機(jī)嘛*.。(??∀??)*.。在uni組件的文件里面找到這個(gè)路徑 uni_modules/uview-ui/components/u-popup/u-popup.vue
watch: { show(newValue, oldValue) { //在這里添加一句樣式 ㄟ(≧◇≦)ㄏ document.body.style.overflow = !newValue ? "auto" : "hidden"; // 是的就是這句話就能解決穿透的問題 if (newValue === true) { // #ifdef MP-WEIXIN const children = this.$children this.retryComputedComponentRect(children) // #endif } } },
document.body.style.overflow 這個(gè)樣式在其他地方寫也是會(huì)生效的只要控制好出現(xiàn)的時(shí)間就能解決滾動(dòng)穿透的問題
二、結(jié)語
這個(gè)滾動(dòng)穿透的問題絕不止出現(xiàn)的h5這一個(gè)平臺(tái)上,可能會(huì)出現(xiàn)在其他地方,畢竟一端開發(fā),多端BUG,后面也是關(guān)注過,在各種小程序中也有這個(gè)問題,后面要是在項(xiàng)目中遇到的話再來更新吧
到此這篇關(guān)于uniapp H5遮罩層、彈窗以及蒙層滾動(dòng)穿透/滑動(dòng)穿透解決辦法的文章就介紹到這了,更多相關(guān)uniapp H5遮罩層彈窗滾動(dòng)穿透問題內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS通過ajax動(dòng)態(tài)讀取xml文件內(nèi)容的方法
這篇文章主要介紹了JS通過ajax動(dòng)態(tài)讀取xml文件內(nèi)容的方法,實(shí)例分析了Ajax操作XML文件的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03使用JavaScript判斷用戶輸入的是否為正整數(shù)(兩種方法)
在項(xiàng)目開發(fā)中,需要使用JavaScript驗(yàn)證用戶輸入的是否為正整數(shù),下面小編給大家分享兩種方法,需要的朋友參考下2017-02-02判斷用戶的在線狀態(tài) onbeforeunload事件
window.event.clientX和window.event.clientY 將捕捉當(dāng)前事件發(fā)生時(shí)鼠標(biāo)相對(duì)與窗口的桌面坐標(biāo),通常情況下IE的關(guān)閉按鈕都會(huì)在頁面的右上部分,所以點(diǎn)關(guān)閉的時(shí)候鼠標(biāo)的坐標(biāo)的Y坐標(biāo)一定是小于0的2011-03-03JavaScript字符串操作的四個(gè)實(shí)用技巧
在制作前端頁面的過程中,經(jīng)常需要用到JavaScript進(jìn)行邏輯處理,很多時(shí)候都需要對(duì)字符串進(jìn)行操作,這篇文章主要給大家介紹了關(guān)于JavaScript字符串操作的四個(gè)實(shí)用技巧,需要的朋友可以參考下2021-07-07