为了账号安全,请及时绑定邮箱和手机立即绑定

怎样使用节流函数让scroll事件的登录框不再抖动?

怎样使用节流函数让scroll事件的登录框不再抖动?

小唯快跑啊 2018-11-13 13:14:49
<style>    #div{        width:800px;        height:400px;        border:10px solid #000;        position:absolute;        left:0;        top:0;        background-color:rgba(130,6,500,.9);    }</style><div id="div">    </div><script>center();function center(){    var vw = document.documentElement.clientWidth;    var vh = document.documentElement.clientHeight;    var offset_W = div.offsetWidth;    var offset_H = div.offsetHeight;    var scrollTop = document.body.scrollTop;    div.style.left = (vw - offset_W) / 2 + "px";    div.style.top = (vh - offset_H) / 2 + scrollTop + "px";}window.addEventListener("scroll",center);window.onresize = center;</script>当垂直滚动条下滑时,使用什么样的方法可以不让这个居中的登录框抖动?
查看完整描述

1 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

过了很久才想起这个提问,今天已经找到了方法了,使用Debouncing函数可以防止抖动。

    function Debouncing(fn,delay){

        let timer = null;

        return function(){

            //可以访问timer的闭包,下一次调用时直接使用clear之后再开启一个定时器,执行函数,以此类推

            let context = this;

            let args = arguments;

            clearTimeout(timer);

            timer = setTimeout(function(){

                fn.apply(context,args);

            },delay);

        }

    }

这个函数主要用到了闭包、作用域、定时器,在给定的delay时间内只调用一次,避免在短时间内触发太多次函数引起性能问题

查看完整回答
反对 回复 2018-12-08
  • 1 回答
  • 0 关注
  • 452 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号