我有一个方法可以检查元素是否从屏幕上溢出并偏移其位置,以便该元素出现在屏幕上。我的问题是我需要检测元素是否改变位置,因为那是触发我的方法的事件。
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)`;
}