如何收听getBoundingClientRect()中的更改?

时间:2019-01-04 18:25:49

标签: javascript css position dom-events

我有一个方法可以检查元素是否从屏幕上溢出并偏移其位置,以便该元素出现在屏幕上。我的问题是我需要检测元素是否改变位置,因为那是触发我的方法的事件。

JS向本机事件处理程序提供的最接近的东西是MutationObserver,但这对我来说有点太宽泛了。我只想听听特定元素的重新定位。还有一个transitionend事件,但这仅适用于具有CSS过渡的元素。

是否可以编写仅在相对于窗口重新定位元素时才触发的CustomEvent?还是有一个本地事件可以完成我正在尝试的事情?

下面是一个示例,显示了我的方法的工作方式(该方法有效;我在这里不寻求帮助,仅提供详细信息):

// FETCH ELEMENT POSITION RELATIVE TO WINDOW

let positionData = el.getBoundingClientRect();

//CHECK TO SEE IF ELEMENT OVERFLOWS

if (positionData.left < 0) {
  let overflowAmount = 0 - positionData.left;

//OFFSET ELEMENT POSITION EXACTLY BY OVERFLOW AMOUNT

  el.style.transform = `translate(${overflowAmount}px, 0px)`;
}

0 个答案:

没有答案