移動端彈出視窗後,底層還能滑動問題的解決
阿新 • • 發佈:2019-02-05
開始用layer去彈窗,發現底層能滑動了這個問題。於是懷疑是不是layer的問題,然後嘗試自己寫一個彈窗,最後結果是一樣的,滑動彈出層的時候,當頂層無法滑動的時候底層就也會滑動。
最後的解決辦法是當彈出視窗時,把底層的position設定成fixd,這時底層會回覆到最頂端,然後用動態設定css的top,設定成負的剛才滾動條的位置,然後滑動時底部怎麼都不會移動了,最後在彈出層關閉的時候把剛才賦值的position fixd去掉,然後將剛才滾動條的位置恢復。上程式碼。
.flexd{
position: fixed;
width: 100%;
}
var scrollTop = $(document).scrollTop();//獲取當前滾動條位置 $("body").addClass("flexd");//設定絕對定位,此時不操作的話底層頁面回到最初位置 $("body").css("top",-scrollTop);//設定top屬性確保螢幕顯示滾動條的當前位置 //彈層 var alert = layer.open({ type: 1, content: $("#layerContent").html(), anim: 'up', style: 'position:fixed; bottom:0; left:0; width: 100%; height: 490px; padding:0px 0; border:none;', end:function(){ //彈層關閉時執行的語句 $("body").removeClass("flexd");//取消絕對定位 $("body").scrollTop(scrollTop);//滾動條回到停留位置 } });
至此問題完美解決