bootstrap在使用弹出框由于滚动条隐藏造成网页抖动或移动的解决办法

bootstrap引用bootstrap.min.js实现弹出框,弹出框会有一个遮罩层,这个时候滚动条会隐藏,网页宽度变大 ,造成网页抖动。

有个比较笨的办法,就是预先在会抖动的地方增加一个div或者li,这个li默认时候隐藏的

<li  id="topbar_li_right" class="nav-item dropdown notification-list" style="width:16.5px; display: none;"></li>  这里的class可随便写,主要时候宽度设置

默认时候隐藏,什么时候呈现呢?

如果页面没有滚动条,弹出框出来时候也不呈现,只有在页面有滚动条时候在呈现,关闭弹出框在重新隐藏这个有宽度的li

 

/* 遮罩层出现时候,打开顶部右侧li */
    $.topbarliShow = function () {
        if ($.isHasScroll()) //如果有滚动条
        {
            document.getElementById("topbar_li_right").style.display = ""; //呈现li
        }
    }

    $.topbarliHidden = function () {//隐藏这个li
            document.getElementById("topbar_li_right").style.display = "none";
    }

 

下边是判断页面是否有滚动条的函数  

//判断页面是否有滚动条
    $.isHasScroll = function () {
        return (document.documentElement.clientHeight < document.documentElement.offsetHeight - 4);
    }

$.topbarliShow  $.topbarliHidden 这两个函数在哪里调用呢?

打开bootstrap.min.js 搜索setScrollbar,主要定位这两处

,this._setScrollbar(),a(document.body).addClass(p.OPEN),  //这里是隐藏滚动条的地方

,b._resetScrollbar()  //这里是关闭遮罩层时候展示滚动条的地方

bootstrap版本不同,写发略有不同,主要是搜索setScrollbar ,一个是setScrollbar(),一个是resetScrollbar()

 

在他们只有分别加上$.topbarliShow  $.topbarliHidden 变成

,this._setScrollbar(),a(document.body).addClass(p.OPEN),$.topbarliShow(),

,b._resetScrollbar(),$.topbarliHidden(),

这个就可以基本实现弹出框出来和关闭时候,页面不抖动了

 

转载于:https://www.cnblogs.com/webocean/p/7446743.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值