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

如何知道DOM元素何时移动或调整大小

  •  26
  • slolife  · 技术社区  · 15 年前

    我想知道是否有一个DOM事件可以监听,它告诉我DOM元素何时在页面上被重新定位或调整大小。我不是说元素被拖放。例如,如果一个页面上有一个包含三个项目的列表,并且我使用JS从页面中删除前两个列表项目中的一个(或者隐藏它或其他什么),我希望附加一个处理程序,以便在第三个列表项目在页面中上移时运行。

    我使用的是jQuery,所以简单的javascript或jQuery答案是可以接受的。

    可能在元素级别没有move/position/resize事件,所以如果有一个页面/doc级别的事件会告诉我页面被重新绘制,我可以检查是否需要再次调用函数?

    我在一个元素上放置了一个透明的div,同时进行了一个webservice调用来删除该元素。因为我需要绝对定位覆盖div,所以我希望它跟踪它最初覆盖的元素。实际上是将其锚定到基础构件上。

    3 回复  |  直到 6 年前
        1
  •  13
  •   Alexis Wilke    9 年前

    一般来说,您无法获得元素移动/调整大小的回调;您必须在区间轮询器中不断地检查维度,这会使它的响应性降低一些。您可以通过在窗口上调用checker来改进这一点 resize 事件(以及 scroll 如果涉及溢流或固定定位。您还可以添加DOM变异事件监听器,以便在从文档树中删除元素时获得通知,但这并不适用于所有浏览器。

    你不能用纯CSS做一个覆盖吗?放 position: relative

    position: absolute;
    z-index: 10;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    opacity: 0.5;
    
        2
  •  16
  •   C-F    8 年前

    我不认为这个解决方案会在这么长时间后相关,但有一个基于溢出和下溢事件的优秀跨浏览器解决方案 here

    为了启用我们的调整大小监听魔术,我们将一个object元素注入到目标元素中,设置一个特殊样式的列表来隐藏它,并监视它的调整大小当目标元素的父元素调整大小时,它作为一个触发器来提醒我们。

    <object> resize 事件,就像一扇窗户。