Web

滚动穿透解决方案

2018-10-02  本文已影响0人  洛桃桃

解决PC/移动端弹出层滚动穿透的问题。

描述

弹出层内容滚动时,body跟随滚动。

方案

法一: overflow: hidden;

.preventScroll {
    height: 100%;
    overflow: hidden;
}

法二: position: fixed

.preventScroll {
    position: fixed;
}

法三: touchmove + preventDefault

** 注意: ** 此法只适用于模态框没有滚动内容的情况。

var $modal = $('.modal');
$modal.on("touchmove",function(e) {
  e.preventDefault();  
})

法四(最佳方案): position: fixed + scrollTop

//打开模态框前调用
function fixedBody() {
    var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
    document.body.style.cssText += 'position:fixed;top:-' + scrollTop + 'px;';
}

//关闭模态框后调用
function looseBody() {
    var body = document.body;
    body.style.position = 'static';
    var top = body.style.top;
    document.body.scrollTop = document.documentElement.scrollTop = -parseInt(top);
    body.style.top = '';
}

参考

上一篇下一篇

猜你喜欢

热点阅读