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)
        }
    })
    
  • 相关阅读:
    iOS 饼状图
    objective-c 中随机数的用法 (3种:arc4random() 、random()、CCRANDOM_0_1() )
    倒计时获取验证码、事件代码
    iOS 技能集结号
    自定义控件:半透明控件
    c# string
    软考题
    php简单实例
    .net 线程池的简单应用
    c# 堆栈四则运算
  • 原文地址:https://www.cnblogs.com/No-harm/p/9613234.html
Copyright © 2011-2022 走看看