DOM事件笔记

点击别处关闭浮层

1.阻止事件传播(stopPropagation)

阻止冒泡,不通知父级元素
代码(document监听浪费内存)

2.setTimeout延迟

利用setTimeout设置事件监听,冒泡完成后监听才进入队列生效
代码(有bug)

3.点开浮层、关闭浮层的例子

写出一个点开浮层、关闭浮层的例子,要求
点击按钮弹出浮层
点击别处关闭浮层
点击浮层时,浮层不得关闭
再次点击按钮,浮层消失
代码

jQuery做一个自动播放的无缝轮播

代码

1.轮播思想

window固定,设置slides的translateX()

2.无缝

设置fake:第一张前面加最后一张的copy,最后一张后面加第一张的copy
先切换到fake,然后隐藏切换到真正页

$slides.css({transform:`translateX(100px)`}) //先切换到fake
      .one('transitionend',function(){
        $slides.hide().offset() //隐藏
        $slides.css({transform:`translateX(200px)`}).show() //切换到真正页再显示
      })

3.自动播放

设置计时器setInterval实现自动播放,但是浏览器切换到其他页面,计时器会乱掉,所以切换到其它页面时就砸掉计时器,回来的时候就重新计时。
document添加监听事件visibilitychange,切换页面后document.hidden=true,切换回来后document.hidden=false

//离开界面砸掉计时器,回来重新设置一个
document.addEventListener('visibilitychange',function(e){
  if(document.hidden){
    clearInterval(timer)
  }else{
    timer = setInterval(function(){
      goToSlide(current+1)
    },2000)
  }
})

推荐阅读更多精彩内容