Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检测HTML元素的回流或移动?_Javascript_Html_Css_Dom - Fatal编程技术网

Javascript 检测HTML元素的回流或移动?

Javascript 检测HTML元素的回流或移动?,javascript,html,css,dom,Javascript,Html,Css,Dom,我构建了一个UI小部件,在实际小部件下面显示一个浮动弹出窗口。它使用绝对定位将自身定位在小部件下方。我所关心的是,当文档布局稍有变化时,绝对定位的元素不在我的UI小部件下面 有没有办法检测HTML元素是否移动或回流?使用相对定位并将小部件连接到实际的小部件上如何?这样,它将始终保持相对于原始小部件的相同位置。您可以将元素附加到body标记,并根据鼠标的位置将其放置在页面上。这就是jQueryUI对话框和工具提示类型脚本等如何绕过z索引问题的方法 如果您有jQuery,可以这样做: $('#cli

我构建了一个UI小部件,在实际小部件下面显示一个浮动弹出窗口。它使用绝对定位将自身定位在小部件下方。我所关心的是,当文档布局稍有变化时,绝对定位的元素不在我的UI小部件下面


有没有办法检测HTML元素是否移动或回流?

使用相对定位并将小部件连接到实际的小部件上如何?这样,它将始终保持相对于原始小部件的相同位置。

您可以将元素附加到body标记,并根据鼠标的位置将其放置在页面上。这就是jQueryUI对话框和工具提示类型脚本等如何绕过z索引问题的方法

如果您有jQuery,可以这样做:

$('#clickelement').click(function(e){
     $('#yourlayer').appendTo('body').css({left: e.pageX + 'px',top: (e.pageY + 12) + 'px',zIndex:'10001'}).show();
});

#yourlayer{
    display:none;
    position:absolute;
    width:300px;
}

编辑:修复了小的打字错误

我找到了一个可接受的解决方案


无论何时显示浮动弹出窗口,我都会创建一个间隔,每隔250毫秒运行一次,再次计算其位置(如果父对象的位置已更改)。当弹出窗口隐藏或关闭时,我会结束计时器。

我也这么认为,但我需要弹出窗口保持在页面上其他所有元素的顶部。。。z-index不适用于相对定位。我刚刚意识到,如果您指的是由于实时调整大小/回流而导致的回流,那么这将没有帮助。也许您可以获得容器元素的底部位置,并使用它来定位层。我以前从未尝试过,所以我不确定它是否可行。在Firefox中,您可能希望尝试更好的性能这是我们最初都得到的直观解决方案。我的问题与您的问题相同,但不想使用此解决方案,因为它的性能不好。