解決微信小程序中的滾動(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)這種情況, 用戶體驗(yàn)當(dāng)然是不好的了。 所以作為一個(gè)有點(diǎn)追求的工程師當(dāng)然是不允許這種情況的發(fā)生了(手動(dòng)狗頭...)

## 解決方案
這種要分情況,
- 當(dāng)蒙層沒有滾動(dòng)條的時(shí)候。
- 當(dāng)蒙層出現(xiàn)滾動(dòng)條的時(shí)候
1. 當(dāng)彈窗沒有滾動(dòng)條的時(shí)候。
直接監(jiān)聽 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)彈窗沒有滾動(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 樣式類
效果如圖:

代碼在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)的位置。目前自己還沒有找到解決方法。 如果大佬有會(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)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
關(guān)于JS與jQuery中的文檔加載問(wèn)題
本文通過(guò)實(shí)例代碼給大家講解了js和jquery中的文檔加載問(wèn)題,感興趣的的朋友一起看看吧2017-08-08
js取float型小數(shù)點(diǎn)后兩位數(shù)的方法
js中取小數(shù)點(diǎn)后兩位方法最常用的就是四舍五入函數(shù)了,前面我介紹過(guò)js中四舍五入一此常用函數(shù),這里正好用上,下面我們一起來(lái)看取float型小數(shù)點(diǎn)后兩位一些方法總結(jié)2014-01-01
使用next.js開發(fā)網(wǎng)址縮短服務(wù)的方法
這篇文章主要介紹了使用next.js開發(fā)網(wǎng)址縮短服務(wù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
JavaScript如何獲取到導(dǎo)航條中HTTP信息
這篇文章主要為大家詳細(xì)介紹了JavaScript如何獲取到導(dǎo)航條中HTTP信息,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
javascript仿163網(wǎng)盤無(wú)刷新文件上傳系統(tǒng)
這個(gè)仿163網(wǎng)盤無(wú)刷新文件上傳系統(tǒng),并沒有用使用.net的控件,完全的手工制作。2008-10-10

