解決微信小程序中的滾動(dòng)穿透問(wèn)題
Mask-Scroll
> 原碼地址 *
蒙層防穿透問(wèn)題
> 蒙層穿透就是,當(dāng)你用fixed 布局讓蒙層顯示的時(shí)候, 手指滑動(dòng)屏幕會(huì)出現(xiàn)底部?jī)?nèi)容也滑動(dòng)的現(xiàn)象. 如圖:

當(dāng)蒙層出現(xiàn)的時(shí)候,你滾動(dòng)屏幕,底部?jī)?nèi)容也一起跟著滾動(dòng)。 這就是蒙層穿透, 也可以叫 '滾動(dòng)穿透'. 當(dāng)然出現(xiàn)這種情況, 用戶(hù)體驗(yàn)當(dāng)然是不好的了。 所以作為一個(gè)有點(diǎn)追求的工程師當(dāng)然是不允許這種情況的發(fā)生了(手動(dòng)狗頭...)

## 解決方案
這種要分情況,
- 當(dāng)蒙層沒(méi)有滾動(dòng)條的時(shí)候。
- 當(dāng)蒙層出現(xiàn)滾動(dòng)條的時(shí)候
1. 當(dāng)彈窗沒(méi)有滾動(dòng)條的時(shí)候。
直接監(jiān)聽(tīng) catch:touchmove 方法, 然后直接返回就可以了。
代碼可以去看fixed 目錄下的文件
主要代碼:
*// wxml*
<view
class="fixed-mask"
bind:tap="hideMsak"
wx:if="{{isShowMask}}"
catch:touchmove="stopMove">
<view class="mask-container" >
<view class="mask__item">
I am {{dogName}}
</view>
</view>
</view>
*// css*
.fixed-mask {
position: fixed;
left: 0;
top: 0;
height: 100vh;
width: 100vw;
background: #333;
opacity: 0.8;
z-index: 2;
}
.mask-container {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.mask__item {
margin: 0 auto;
background-color: #ff0015;
text-align: center;
width: 500rpx;
height: 500rpx;
line-height: 500rpx;
margin-bottom: 20rpx;
}
*// js*
stopMove () {
return;
}
效果如下:

上面是當(dāng)彈窗沒(méi)有滾動(dòng)條的情況, 當(dāng)彈窗出現(xiàn)滾動(dòng)條的時(shí)候。
哦豁, 完蛋, 彈窗不能滾動(dòng)了。
2. 當(dāng)彈窗有滾動(dòng)條的時(shí)候
方法一:
動(dòng)態(tài)給底部滾動(dòng)的元素 添加固定定位。也就是當(dāng)出現(xiàn)彈窗的時(shí)候添加一個(gè) class 樣式類(lèi)
效果如圖:

代碼在scroll1 文件夾。
*// css*
.bottom-fixed {
position: fixed;
left: 0;
top: 0;
overflow: hidden;
}
*// wxml*
<view class="dog-container {{isShowMask ? 'bottom-fixed' : ''}}"></view>
大家可以看到 因?yàn)榈撞吭亟o固定到頁(yè)面頂部了, 而不是你點(diǎn)擊彈窗時(shí)出現(xiàn)的位置。目前自己還沒(méi)有找到解決方法。 如果大佬有會(huì)的, 不吝賜教。。
*方法二:*
> scroll-view 設(shè)置高度 以及縱向滾動(dòng)方向。
不過(guò)scroll-view 會(huì)有一些bug
代碼在scrooll 文件夾
效果如下圖:

總結(jié)
以上所述是小編給大家介紹的解決微信小程序中的滾動(dòng)穿透問(wèn)題,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
JS+JSP通過(guò)img標(biāo)簽調(diào)用實(shí)現(xiàn)靜態(tài)頁(yè)面訪(fǎng)問(wèn)次數(shù)統(tǒng)計(jì)的方法
這篇文章主要介紹了JS+JSP通過(guò)img標(biāo)簽調(diào)用實(shí)現(xiàn)靜態(tài)頁(yè)面訪(fǎng)問(wèn)次數(shù)統(tǒng)計(jì)的方法,基于JavaScript動(dòng)態(tài)調(diào)用jsp頁(yè)面通過(guò)對(duì)TXT文本文件的讀寫(xiě)實(shí)現(xiàn)統(tǒng)計(jì)訪(fǎng)問(wèn)次數(shù)的功能,需要的朋友可以參考下2015-12-12
基于JS實(shí)現(xiàn)發(fā)送驗(yàn)證碼的計(jì)時(shí)器效果
這篇文章主要為大家詳細(xì)介紹了如何基于JS實(shí)現(xiàn)一個(gè)發(fā)送驗(yàn)證碼的計(jì)時(shí)器效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧2023-11-11
用javascript實(shí)現(xiàn)點(diǎn)擊鏈接彈出"圖片另存為"而不是直接打開(kāi)
用javascript實(shí)現(xiàn)點(diǎn)擊鏈接彈出"圖片另存為"而不是直接打開(kāi)...2007-08-08
JavaScript數(shù)組reduce()方法的語(yǔ)法與實(shí)例解析
js函數(shù)中有三個(gè)在特定場(chǎng)合很好用的函數(shù):reduce(),map(),filter(),這篇文章主要給大家介紹了關(guān)于JavaScript數(shù)組reduce()方法的相關(guān)資料,需要的朋友可以參考下2021-07-07
jquery SweetAlert插件實(shí)現(xiàn)響應(yīng)式提示框
為了滿(mǎn)足用戶(hù)體驗(yàn)度,使用SweetAlert插件實(shí)現(xiàn)響應(yīng)式提示框效果非常好,下面通過(guò)這篇文章給大家介紹jquery SweetAlert插件實(shí)現(xiàn)響應(yīng)式提示框,需要的朋友可以參考下2015-08-08
使用JS實(shí)現(xiàn)導(dǎo)航切換時(shí)高亮顯示的示例講解
今天小編就為大家分享一篇使用JS實(shí)現(xiàn)導(dǎo)航切換時(shí)高亮顯示的示例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08

