滚动事件、加载事件

155 阅读3分钟

滚动事件和加载事件

滚动事件 'scroll'

当页面进行滚动时触发的事件

监听整个页面滚动:

window.addEventListener('scroll',function(){
    //执行操作
})

给 window 或 document 添加 scroll 事件 监听某个元素的内部滚动直接给某个元素加即可

加载事件 'load'

加载外部资源(如图片、外联CSS和JavaScript等)加载完毕时触发的事件

window.addEventListener('load',function(){
    //执行操作
})
  • 给 window 添加 load 事件

元素大小和位置

scroll家族

使用场景: 我们想要页面滚动一段距离,比如100px,就让某些元素 显示隐藏,那我们怎么知道,页面滚动了100像素呢? 就可以使用scroll 来检测页面滚动的距离~~~

  • 获取宽高: 获取元素的内容总宽高(不包含滚动条)返回值不带单位 scrollWidthscrollHeight
  • 获取位置: 获取元素内容往左、往上滚出去看不到的距离 scrollLeftscrollTop 这两个属性是可以修改的

开发中,我们经常检测页面滚动的距离,比如页面滚动100像素,就可以显示一个元素,或者固定一个元素

offset家族

使用场景: 前面案例滚动多少距离,都是我们自己算的,最好是页面 滚动到某个元素,就可以做某些事。 简单说,就是通过js的方式,得到元素在页面中的位置 这样我们可以做,页面滚动到这个位置,就可以返回 顶部的小盒子显示…

  • 获取宽高: 获取元素的自身宽高、包含元素自身设置的宽高、padding , border offsetWidthoffsetHeight
  • 获取位置: 获取元素距离自己定位父级元素的左、上距离 offsetLeftoffsetTop 注意是只读属性

client家族

会在窗口尺寸改变的时候触发事件:

  • 获取宽高: 获取元素的可见部分宽高(不包含边框,滚动条等) clientWidthclientHeight
  • 获取位置: 获取左边框和上边框宽度 clientLeftclientTop 注意是只读属性

总结

  1. 页面滚动事件如何添加?
  • scroll
  • 监听整个页面滚动给 window 或 document 加
  1. 加载事件有哪两个?如何添加?
  • load 事件
  • 监听整个页面资源,给 window 加
  1. DOMContentLoaded
  • 给 document 加,当初始的 HTML 文档被完全加载和解析完成后,DOMContentLoaded 事件被触发,而无需等待样式表、图像等完全加载
  1. scrollWidth和scrollHeight是得到元素什么的宽高?
  • 内容
  • 不包含滚动条
  1. 被卷去的头部或者左侧用那个属性?是否可以读取和修改?
  • scrollTop / scrollLeft
  • 可以读取,也可以修改(赋值)
  1. 检测页面滚动的头部距离(被卷去的头部)用那个属性? document.documentElement.scrollTop
  2. offsetWidth和offsetHeight是得到元素什么的宽高? 内容 + padding + border
  3. offsetTop和offsetLeft 得到位置以谁为准? 带有定位的父级 如果都没有则以 文档左上角 为准
  4. offset家族 获取元素自身大小:包括自身设置的宽高、padding、border 获取元素距离定位父级的左和上距离 只读属性
  5. client家族 获取元素可见区域的大小 获取元素左、上边框距离 只读属性
  6. scroll家族 获取元素内容的总大小 获取元素向左向上滚出去看不见的距离 可读写属性

\