Javascript 如何使用MutationObserver()或类似工具监视div项位置的更改?
我正在使用Javascript 如何使用MutationObserver()或类似工具监视div项位置的更改?,javascript,jquery,html,css,mutation-observers,Javascript,Jquery,Html,Css,Mutation Observers,我正在使用JQuery.cycle2在中循环浏览图像。它提供的自定义样式属性之一是能够使用此自定义属性将图像居中放置在区域中: data-cycle-center-horz="true" 具有id=“cycle slideshow”,并且最初设置为style=“visibility:hidden”,以便在执行其他必要操作之前,幻灯片不会显示 要查看幻灯片,我使用: $('#cycle-slideshow').css({'visibility': 'visible'}); …这有一个问题:它会
JQuery.cycle2
在
中循环浏览图像。它提供的自定义样式属性之一是能够使用此自定义
属性将图像居中放置在
区域中:
data-cycle-center-horz="true"
具有id=“cycle slideshow”
,并且最初设置为style=“visibility:hidden”
,以便在执行其他必要操作之前,幻灯片不会显示
要查看幻灯片,我使用:
$('#cycle-slideshow').css({'visibility': 'visible'});
…这有一个问题:它会在对中生效之前捕获容器中左对齐的图像,通常是一毫秒后,但足够明显,从而产生图像从左到中心的“闪烁”。此后,将设置幻灯片放映,所有后续图像都将在
中居中显示。因此,问题在于初始图像的显示:它应该是可见的,并且已经居中,所有后续图像也是如此(因为在调用它们进行显示时,自定义居中已经生效)
我发现的最接近的解决方法是捕获变量,即第一幅图像的初始位置:
$('#cycle-slideshow').offset().left;
…然后在例程中稍后将其再次捕获到另一个变量;如果已进行居中,则值将不同,并且可以安全地使内容可见
但这需要更长的时间,有时时机不对。在实现了JQuery.Cycle2
的自定义数据循环中心horz=“true”
属性之后,我需要对
进行访问,并且该时间无法预测,因此不知道将访问命令放置在何处。(我尝试过回调,但没有效果。)
我看到,MutationObserver()
主要用于跟踪DOM中元素的添加和减少,但可能可以用于检测$(“#循环幻灯片”).offset()中的变化。left
属性变化,这是唯一一个表示图像新的属性变化,事实上,中心地位已经确立
我需要通过JQuery中的监视函数/侦听器/某些东西设计一种方法来实现这一点,但我不确定如何继续。如何“侦听”从初始值$(“#循环幻灯片放映”).offset().left
到新值的更改(无论何时发生),然后执行$(“#循环幻灯片放映”).css({'visibility':'visible')