zoukankan      html  css  js  c++  java
  • [JavaScript]记录完成轮播过程中的几个点

    记录几个坑

    之前的轮播:

    完整代码:GitHub

    效果预览:GitHub

    最近完成的轮播:

    完整代码:GitHub

    效果预览:GitHub

    在完成轮播中解决两个问题:

    1.setInterval()会和按钮绑定的事件发生冲突。

    表现为:setInterval()设置了每3S轮播一次,在没有任何动作干扰的情况下,轮播正常;但是当需要点击按钮跳转到其他图片时,从点击按钮到图片跳转成功的这段时间,假设是1S,也会计算到setInterval()设定的时间中;即从A1到A2需要3S,在A1到A2的过程中2.5S时,我们点击A3,他就不会在A3上停留3S再轮播,而是从A3到A4只需要0.5S(3-2.5)。

    解决办法:给轮播组件添加监听事件,一旦鼠标移入组件范围,轮播停止;鼠标移出,轮播继续。这样就能保证每一张图片到下一张图片都需要3S的时间。

    $('#slidesWrapper').on('mouseenter',function(){
        window.clearInterval(timerId)
    })
    
    // 当鼠标移出
    $('#slidesWrapper').on('mouseleave',function(){
        timerId = setTimer()
    })
    

    2.轮播絮乱

    表现为:一旦浏览器离开轮播的tab,跳转到其他的tab后过一段时间再回来,轮播的速度会加快。

    解决方法:给document添加visibilitychange事件。

    MDN

    浏览器标签页被隐藏或显示的时候会触发visibilitychange事件.

    我们只要判断:如果标签页被隐藏,则轮播停止;标签页被显示,轮播继续,就可以解决这个问题了。

    如:

    document.addEventListener('visibilitychange',function(e){
        if(document.hidden){
            window.clearInterval(timerId)
        }else{
            timerId = setTimer()
            console.log(2)
        }
    })
    
  • 相关阅读:
    WinForm窗体间传值
    C# 把字符串类型日期转换为日期类型
    datagridview数据导出到excel
    C#中对文件的操作小结
    保证应用程序只有一个实例运行
    c#读取excel到dataset
    让select下的option选中
    使用mpvue开发小程序教程(二)
    手把手教你用vue-cli构建一个简单的路由应用
    wangEditor
  • 原文地址:https://www.cnblogs.com/No-harm/p/9613234.html
Copyright © 2011-2022 走看看