How to know when an DOM element moves or is resized
I don't think this solution would be relevant after so long, but there's an excellent cross-browser solution based on the overflow and underflow events presented here
To enable our resize listening magic, we inject an object element into the target element, set a list of special styles to hide it from view, and monitor it for resize – it acts as a trigger for alerting us when the target element parent is resized.
The <object>
element's content has a native resize
event, just like a window.
You can't get a callback for element movement/resizing in general; you would have to keep constantly checking the dimensions in an interval poller, which would make it a bit less responsive. You could improve this by calling the checker on a window resize
event too (and scroll
if overflow or fixed positioning is involved. You could also add DOM Mutation Event listeners to get informed when elements are removed from the document tree, but this doesn't work in all browsers.
Can't you do an overlay with plain CSS? eg. put position: relative
on the element to be obscured, then add the overlay inside it, with the following?
position: absolute;
z-index: 10;
left: 0;
top: 0;
width: 100%;
height: 100%;
opacity: 0.5;
There's a (Ben Alman) plugin for that.TM
This is a good plugin, although I suggest using it sparingly (i.e., not on too many elements), so as to keep the amount of polling down.