DOM事件笔记

114 阅读1分钟

点击别处关闭浮层

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)
  }
})