代码之家  ›  专栏  ›  技术社区  ›  Tower

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

  •  1
  • Tower  · 技术社区  · 15 年前

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

    是否有方法检测HTML元素是否已移动或回流?

    3 回复  |  直到 15 年前
        1
  •  2
  •   casablanca    15 年前

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

        2
  •  0
  •   ErikPhipps    15 年前

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

    如果您有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;
    }
    

    编辑:修正小字体

        3
  •  0
  •   Tower    15 年前

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

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