JS关于DOM部分(元素)

警告
本文最后更新于 2022-09-20,文中内容可能已过时。

content-box | border-box 控制 css 中 width 设置的是 content 还是 content + padding(根据属性名很容易区分)。

文字会溢出到padding-bottom

offsetParent: 获取最近的祖先:

  • position 为 absolute,relative 或 fixed
  • 或 body
  • 或 table, th, td

offsetTop/offsetLeft: 元素带 border 相对于最近的祖先偏移距离

包含 boder 的完整大小

content 相对于 border 外侧的宽度

当系统为阿拉伯语滚动条在左侧时,client 就变成了 border-left + 滚动条的宽度

content + padding 的宽度,不包括滚动条

元素超出 contentHeight/conentWidth 的部分

元素实际的宽高

js

scrollBy(x, y) // 相对自身偏移
scrollTo(pageX, pageY) // 滚动到绝对坐标
scrollToView() // 滚到视野里
  • 判断是否触底(无限加载之类):offsetHeight + scrollTop >= scollHeight
  • 判断是否进入可视区域(懒加载图片之类):元素的offsetTop - wrap的scrollTop < 窗口clientHeight
  • clientX/clientY 相对于窗口
  • pageX/pageY 相对于文档

一个 API dom.getBoundingClientRect() 返回: x,y,top,left,right,bottom,width,height

注意,x,y 与 left,top 并不是多余重复的元素,而是在制定了起点时,x,y 会改变,它是矩形原点相对于窗口的 X/Y 坐标。

  • dom.style,获取行内样式,并且可以修改
  • dom.currentStyle,只能获取样式
  • windwo.getComputedStyle(dom),只能获取样式(IE 兼容较差)