offset 家族

offsetWidth/Height: 元素自身的 width/Height + padding + border

offsetParent: 找到离自己最近的带有定位的父元素,如果没有就返回body,如果元素是固定定位返回 null

offsetLeft/Top: 返回元素距离它的offsetParent 内容区的上左边距(从自己的边框到父盒子padding的距离 不算父盒子的边框)

event 事件对象

兼容写法: var e = e || window.event
鼠标:
  • pageX/Y: 鼠标相对于页面的上左边距

  • clientX/Y: 鼠标相对于当前网页可见区域的上左边距

  • offsetX/Y: 鼠标相对于触发事件的元素的上左边距

  • screenX/Y: 鼠标相对于该屏幕的上左边距

元素:
  • 触发事件的元素: event.target

  • 绑定事件的元素: event.currentTarget (和事件中的this一致)

阻止冒泡:
  • event.stopPropagation()
阻止默认事件:
  • event.preventDefault()

scroll 家族(滚动)

scrollTop/Left: 获取元素被卷入的上左边距

页面:
  • 获取卷入上左边距:html.scrollTop/Left || window.pageY/XOffset || body.scrollTop/Left
    设置卷入:window.scroll(x,y) window.scrollBy(x,y)监听滚动:window.onscroll = funcnction(){}
顺滑滚动
1
2
1. html { scroll-behavior: smooth }   
2. window.scroll/By({ top:xx , left: xx, behavior: "smooth" })

cliten 家族(可视区域)

clitenWidth/Height: 显示元素内容可视大小。元素自身宽高 + padding,有滚动条时,会减去滚动条的宽度
clitenTop/Left:返回元素上左边框的宽度

检测屏幕宽度(分辨率)

clientWidth: 返回的是 可视区 大小 浏览器内部的大小
window.screen.width: 返回的是我们电脑的 分辨率 跟浏览器没有关系

三大家族区别

offsetWidth: width + padding + border
clientWidth: width + padding 不包含border
scrollWidth: width + padding 不包含border