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