js解決移動端滾動穿透問題方案詳解
引言
移動端有可滾動的彈窗肯定會遇到的問題,滑動彈層背景跟著滾動,如果彈窗里面的內(nèi)容不需要滾動的可以直接粗暴的把滾動事件禁用掉,但是如果彈窗內(nèi)容過多需要滾動那就不可以這樣做。
更正(只適合白色背景的頁面!只適合白色背景的頁面!只適合白色背景的頁面!因?yàn)橛袝r(shí)候會出現(xiàn)閃白!我也沒有找到完美解決滾動穿透的辦法)
vue的解決辦法
isShowDialog是控制彈窗顯示的,監(jiān)聽isShowDialog的改變,對watch使用不明白的可以去看vue偵聽器
watch:{ // 如果 ` isShowDialog` 發(fā)生改變,這個(gè)函數(shù)就會運(yùn)行,第一個(gè)參數(shù)是isShowDialog最新的值 isShowDialog(val){ this.scrollForbid(val) } }
scrollForbid(val) { let body = document.body if(val){ // 彈窗顯示的時(shí)候 this.scrollTop = window.scrollY body.style.width = '100%' body.style.position = 'fixed' body.style.top = -this.scrollTop + 'px' } else { // 彈窗關(guān)閉 body.style.width = '' body.style.position = '' body.style.top = '' window.srcollTo(0,this.scrollTop) } }
原生js解決辦法
如果用原生來寫的話調(diào)用scrollForbid(val)方法,禁止?jié)L動的時(shí)候傳true,解除滾動傳false過去就可以了。
以上就是js解決移動端滾動穿透問題方案詳解的詳細(xì)內(nèi)容,更多關(guān)于js移動端滾動穿透的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
前端必會的package.json創(chuàng)建及常見屬性用法示例詳解
這篇文章主要為大家介紹了前端必會的package.json創(chuàng)建及常見屬性用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08JavaScript實(shí)際應(yīng)用:innerHTMl和確認(rèn)提示的使用
JavaScript實(shí)際應(yīng)用:innerHTMl和確認(rèn)提示的使用...2006-06-06umi插件開發(fā)仿dumi項(xiàng)目實(shí)現(xiàn)基礎(chǔ)路由解析
這篇文章主要為大家介紹了umi插件開發(fā)仿dumi項(xiàng)目實(shí)現(xiàn)基礎(chǔ)路由解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01JQ中$(window).load和$(document).ready區(qū)別與執(zhí)行順序
JQ中的$(document).ready()大家應(yīng)該用的非常多,基本每個(gè)JS腳本中都有這個(gè)函數(shù)的出現(xiàn)有時(shí)甚至?xí)霈F(xiàn)多個(gè),那么另一個(gè)加載函數(shù)$(window).load相對出現(xiàn)的次數(shù)就很少了,下面為大家介紹一下兩者的區(qū)別與他們的執(zhí)行順序2017-03-03