uniapp?H5遮罩層、彈窗以及蒙層滾動穿透/滑動穿透解決辦法
前言
首先來一句:uniapp 一端開發(fā),多端BUG近期項目用到了uniapp + uview 就出現(xiàn)了很多奇怪的問題,滾動穿透問題更是奇怪且多發(fā)。不論是彈窗,蒙層,遮罩,或者普通的元素置頂都會出現(xiàn),也是解決了很久,特地記錄一下,希望對各位’牛馬’有用
一、解決過程
第一次:在uview 組件(時間組件)u-datetime-picker上碰到,通過百度也是找到了解決方法
// 在父級元素添加重寫滾動事件 @touchmove.stop.prevent="() => { }"
<view @touchmove.stop.prevent="() => { }">
<u-datetime-picker :show="isOpenDateHMS" :minDate="getMillisecond()" @confirm="closeDateHMS" mode="datetime">
</u-datetime-picker>
</view>
第二次:是寫了自定義的遮罩層,居然這個問題又來了
但是使用了第一次的方法@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)行,??!什么啊,它并沒有生效,又弄了很長時間,但是項目又比較急就只能擱置了,后面在花時間弄吧
第三次:它它它真滴又出現(xiàn)啦,不過這次是在其他地方uview 彈出層組件 u-popup
我心里想同樣是uview的東西那寫哪個也應(yīng)該會生效 --@touchmove,但是它辜負(fù)了我的信任,居然沒有用
完了客戶又在提這個問題了,怎么辦呢,誰讓客戶是上帝呢,智障客戶又不是不能用,只能在研究唄,又是2個小時,當(dāng)要我放棄時終于看到了希望,發(fā)現(xiàn)這個鬼玩意的滾動條居然是在整個page上的,試著在控制臺寫了點(diǎn)樣式居然生效了,這不就是轉(zhuǎn)機(jī)嘛*.。(??∀??)*.。在uni組件的文件里面找到這個路徑 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 這個樣式在其他地方寫也是會生效的只要控制好出現(xiàn)的時間就能解決滾動穿透的問題
二、結(jié)語
這個滾動穿透的問題絕不止出現(xiàn)的h5這一個平臺上,可能會出現(xiàn)在其他地方,畢竟一端開發(fā),多端BUG,后面也是關(guān)注過,在各種小程序中也有這個問題,后面要是在項目中遇到的話再來更新吧
到此這篇關(guān)于uniapp H5遮罩層、彈窗以及蒙層滾動穿透/滑動穿透解決辦法的文章就介紹到這了,更多相關(guān)uniapp H5遮罩層彈窗滾動穿透問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS通過ajax動態(tài)讀取xml文件內(nèi)容的方法
這篇文章主要介紹了JS通過ajax動態(tài)讀取xml文件內(nèi)容的方法,實例分析了Ajax操作XML文件的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03
使用JavaScript判斷用戶輸入的是否為正整數(shù)(兩種方法)
在項目開發(fā)中,需要使用JavaScript驗證用戶輸入的是否為正整數(shù),下面小編給大家分享兩種方法,需要的朋友參考下2017-02-02
判斷用戶的在線狀態(tài) onbeforeunload事件
window.event.clientX和window.event.clientY 將捕捉當(dāng)前事件發(fā)生時鼠標(biāo)相對與窗口的桌面坐標(biāo),通常情況下IE的關(guān)閉按鈕都會在頁面的右上部分,所以點(diǎn)關(guān)閉的時候鼠標(biāo)的坐標(biāo)的Y坐標(biāo)一定是小于0的2011-03-03

