滚动、加载事件;scroll、offset、client家族

304 阅读2分钟

滚动事件和加载事件

一、滚动事件

页面滚动时触发事件

事件名:scroll

//页面滚动事件
window.addEventlistener('click',function(){
//执行操作
})

二、加载事件

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

事件名:load

监听页面所有资源加载完毕:

给window添加load事件

//页面加载事件
window.addEventlistener('load',function(){
//执行操作
})

不光可以监听整个页面资源加载完毕,也可以针对,某个资源绑定加载事件

2.当初始的HTML文档被完全加载解析完成之后,DOMContentLoaded事件被触发,而无需等待样式表、图像等完全加载

事件名:DOMContentLoaded

监听页面DOM加载完毕:

给document添加DOMContentLoaded事件

document.addEventListener('DOMContentLoaded',function(){
//执行操作
})

元素大小和位置

一、scroll家族

1.获取宽高

获取元素的内容总宽高(不包含滚动条),返回值不带单位

scrollWidth和scrollHeight

2.获取位置

获取元素内容往左、网上滚出去看不到的距离

scrollLeft和scrollTop,这两个属性是可以修改的

div.addEventListener('scroll',function(){
	console.log(this.scrollTop)
})

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

//页面滚动事件
window.addEventListener('scroll',function(){
//document.documentElement.scrollTop 获取当前页面被卷去的头部
let num = document.documentElement.scrollTop
console.log(num)
})

二、offset家族

1.获取宽高

  • 获取元素自身宽高,包含元素自身设置的宽高、padding、border
  • offsetWidth和offsetHeight

2.获取位置

  • 获取元素距离自己定位父级元素的左、上距离
  • offsetLeft和offsetTop,如果没有定位,则以文档左上角为准

三、client家族

1.获取宽高

  • 获取元素可见部分宽高,不包含边框、滚动条等
  • clientWidth和clientHeight

2.获取位置

  • 获取左边框和上边框的宽度,只限左、上边框
  • clientLeft和clientTop

3.窗口尺寸改变时触发事件

属性名:resize

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

检测屏幕宽度

window.addEventListener('resize',function(){
let w = docment.docmentElement.clientWidth
console.log(w)
})

四、scroll、offset、client总结

scrollWidth:获取容器的宽度,不包含滚动条,边框等,但包含滚动的区域(不可视区域)

offsetWidth:获取可视区域的宽度,包含滚动条

clientWidth:获取可视区域宽度,不包含滚动条

scrollLeft:获取左侧滚动的距离

offsetLeft:获取和已经定位的父级元素的左距离,若没有定位,以文档左上角为准

clientLeft:获取左边框宽度