美文网首页
轮播轮播

轮播轮播

作者: CeaCrab | 来源:发表于2018-04-30 11:43 被阅读0次

1. 无缝轮播bug原因

之前无缝轮播在切换其他页面再回来的时候会出现错乱bug,造成这样的原因是切换到其他页面的时候其实轮播是会搞些其他小动作,比如偷懒啊什么的,当你切换回来的时候突然会把之前需要轮播的图片一下播完,我们可以在html中加入一下代码,打印出来当前事件,在轮播页面时,可以看到打印都是正常的,当我们切换到其他页面等待几秒切换回来的时候发现,打印出来的有的每秒只打印出来一次,因为设置的是每秒打印两次。

 <script>
    setInterval(function(){
        console.log(new Date) //打印当前事件(每秒2次)
    },500)
</script>
深度截图_选择区域_20180425224501.png

2. 解决bug

知道问题所在了,解决办法很简单,既然用户切换到其他页面,为什么还要浪费内存继续轮播呢,完全可以暂停轮播,用户切换回来继续播放。这就要考虑怎么能知道用户有没有在轮播页面呢?可以使用visibilityChange这个API,打印出来doucument.hidden这个属性,当切换页面回来的时候我们看到true和false,true是代表切走状态,false是代表切换回来状态,这样可以在hidden状态砸掉闹钟,false的时候启动闹钟,码如下:

let timer = setInterval(() => { //闹钟设置名字timer,方便砸
   // $(`.images > img:nth-child(${x(n)})`).removeClass('current').addClass('leave')
   leaveActive(indexImg(n)) //leaveActive这个函数返回值是undefined,
       .one('transitionend',(e) => { // undefined后边接事件肯定不行,可以让leaveActive把这个节点当做返回值返回
           // $(e.currentTarget).removeClass('leave').addClass('enter')
           enterActive($(e.currentTarget))
       })
   // $(`.images > img:nth-child(${x(n+1)})`).removeClass('enter').addClass('current')
   currentActive(indexImg(n+1))
   n += 1
},2000)
//监听用户是否在浏览轮播页面
document.addEventListener('visibilitychange',function(e){
   console.log(document.hidden)
   if(document.hidden){
       //停掉轮播
       window.clearInterval(timer)
   }else{
       //重新启动轮播
       let timer = setInterval(() => { //timer名字留着方便下一次砸闹钟
       leaveActive(indexImg(n)) 
           .one('transitionend',(e) => {
               enterActive($(e.currentTarget))
           })
       currentActive(indexImg(n+1))
       n += 1
       },2000)
   }
})

相关文章

  • 无标题文章

    轮播图分为:传统轮播图、间歇轮播图、呼吸轮播图、无缝滚动轮播图等。它们各具特色,各有用处。 1.传统轮播图 第一步...

  • 项目-轮播图

    整个轮播图分为三部分:轮播指标、轮播项目及轮播导航。用boostrap实现轮播图要比用js、jQuery方便的多,...

  • 轮播图

    轮播图分为:传统轮播图、间歇轮播图、呼吸轮播图、无缝滚动轮播图等。 1.传统轮播图 第一步,得到元素 第二步,设置...

  • jQuery传统轮播、三位置轮播、呼吸轮播

    一、传统轮播 二、三位置轮播 三、呼吸轮播

  • 轮播图的实现

    1、轮播图的协议 2、轮播视图:SMCarouselView 3、轮播视图的cell

  • 个人博客—轮播器

    个人博客—轮播器 轮播器自动轮播,每张图片淡入淡出 控制按钮和图片描述跟随图片轮播 鼠标悬停图片上方则停止轮播,滑...

  • fusion轮播

    fusion轮播 【轮播1标题】复仇者联盟4【轮播1标题】 【轮播1图片网址】http://img04.sogou...

  • day7_作业

    轮播图1 轮播图2

  • 轮播

    轮播: UIScrollview轮播UICollectionView轮播 实现步骤: (1)添加并设置定时器(2)...

  • [iOS]定制性强的广告轮播图--SCAdView

    @[无限轮播图] @[3D轮播图] @[广告轮播图] SCAdView Statement If my code ...

网友评论

      本文标题:轮播轮播

      本文链接:https://www.haomeiwen.com/subject/mdjulftx.html