Skip to content

Instantly share code, notes, and snippets.

@Quinten
Created February 16, 2016 09:03
Show Gist options
  • Save Quinten/6b18de8a26e4de7f1008 to your computer and use it in GitHub Desktop.
Save Quinten/6b18de8a26e4de7f1008 to your computer and use it in GitHub Desktop.
javascript trigger on element resize
var onElementResize = function(element, callback) {
if (!onElementResize.watchedElementData) {
onElementResize.watchedElementData = [];
var checkForChanges = function() {
onElementResize.watchedElementData.forEach(function(data) {
if (element.offsetWidth !== data.offsetWidth ||
element.offsetHeight !== data.offsetHeight) {
data.offsetWidth = element.offsetWidth;
data.offsetHeight = element.offsetHeight;
data.callback();
}
});
};
// check for changes when window is resized
window.addEventListener('resize', checkForChanges);
// check when dom changes
var observer = new MutationObserver(checkForChanges);
observer.observe(document.body, {
attributes: true,
childList: true,
characterData: true,
subtree: true
});
}
onElementResize.watchedElementData.push({
element: element,
offsetWidth: element.offsetWidth,
offsetHeight: element.offsetHeight,
callback: callback
});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment