附上完整的解決方案參考鏈結(
在彈出層加乙個父級元素遮罩層,阻止滾動事件,但是問題是遮罩層所有子元素(彈出層)也不能滾動。
方法一:那麼平級設定mask,繫結事件-》雖然滾動mask,頁面沒有穿透滾動問題,但是當彈出層滾動到頭繼續拉時頁面會滾動
方法二:彈出時body設定overflow:hidden,真機上面需要加上position:fixed,由於給了fixed定位,頁面會彈上最頂部,然後記錄當前高度,彈出層消失時還原body設定。但是頁面頂部的banner會受到壓縮,變形??
方法三:最終使用的是自己通過touchmove,touchstart,touchend等方法模擬滾動,缺點是沒有手機原生的滾動順滑。
實現**如下
var endpst = {}, //結束位置
elepst={},
start={}; //
初始位置
var maxtop = $('.content').height()-$('.contents').height();
$('.contents').on('touchstart', function
(event) ;
elepst =;
})$('.contents').on('touchmove', function
(event) ; //
手移動的 偏移位置
endpst['top'] = (elepst.y + offset.y)offset.y);
endpst['top'] = endpst['top']> 0? 0 :endpst['top'];
this.style.top = endpst.top + 'px';
})$('.contents').on('touchend', function
(e) )
按照標籤的語義化,button標籤是用來點選的。而div,自己體會哈。給div加個屬性 cursor:pointer;
在蘋果裝置上onclick就有效了
移動端滾動穿透問題
一 body。一般pc端這樣就行了,但在移動端可就不行了,因為他有touchmove。二 可以阻止彈層的touchmove事件,但如果你的彈層內的內容需要滑動,這種方法pass document.body.addeventlistener touchmove function e 三 後來找到乙個比...
移動端 pc端,遮罩層滾動穿透問題
常見的解決方式有一下三種 model open遮罩層顯示時將 modal open 新增到 html上,刪除多餘一頁的部分,禁止頁面滾動。遮罩層隱藏時,移除.modal open,恢復頁面滾動即可 缺點 實現滾動條無法滾動 var mo function e 禁止滑動 function stop 取...
VUE移動端 模態框滾動穿透問題
1 v show顯示模態框 2 watch 監聽模態框 的變化 watch 3 在ishidden值發生變化的時候,a 阻止瀏覽器的預設行為,同時禁止頁面滾動 scrollstop document.body.style.overflow hidden document.addeventlisten...