Notes

CSSOM API

显示相关的 API, 分为三大部分

窗口

都挂靠在 window 对象上

实际上,以上 API 可能会由于浏览器的安全考虑而禁用或没有实现,执行后并没有什么效果

window.open("about:blank", "_blank", "some feature");

滚动

滚动相关的 API 又可以分为两种

视口滚动

属性或方法挂靠在 window 对象上

监听视口滚动事件

document.addEventListener("scroll", (event) => {
  // do something...
});

元素滚动

属性或方法挂靠在元素上

监听元素的滚动事件

aElement.addEventListener("scroll", (event) => {
  // do something...
});

布局

布局相关的 API 又可以分为两种

全局布局信息

挂靠在 window 对象上

元素布局信息

如何获取元素的宽高此类的尺寸信息?

元素实际上是安置在「盒子」中,因此,所谓的元素宽高,应该是指这个「盒子」的宽高

以上两个 API 获取到的矩形区域都是相对于视口坐标,由于视口是固定不变的,因此每次滚动后,以上两个 API 获取到的值都会发生变化(相对于视口坐标,滚动后就变化了)。因此,当想要获得某个元素相对于整个页面的位置,需要通过 JavaScript 计算出来

const offsetY = Math.abs(document.documentElement.getBoundingClientRect().y) + Math.abs(anElement.getBoundingClientRect().y)