<!DOCTYPE html> <html> <head> <style> html, body { height: 100%; } #aligner { height: 100%; display: flex; } .container { width: 20%; background: #FF9800; cursor: pointer; position: relative; border-right: 1px solid black; border-left: 1px solid black; } .container.elq-width-under-200 { height: 200px; } .container.elq-width-above-200 { height: 400px; } #dimensions { font-size: 3em; color: #FFF; } #dim-x, #dim-y { color: #263248; } </style> </head> <body> <button onclick="resize()">Resize</button> <div id="aligner"> </div> <script src="../node_modules/jquery/dist/jquery.min.js"></script> <script src="../build/element-resize-detector.js"></script> <script> var alignerWidth = 100; var cnt = 0; function resize() { if(alignerWidth === 100) { alignerWidth = 50; } else { alignerWidth = 100; } $("#aligner").width(alignerWidth + "%"); console.time("resize"); } $(function() { function onElementResize(element) { if(++cnt === numElements) { cnt = 0; console.timeEnd("resize"); } } function createDiv(width) { var d = document.createElement("div"); d.className = "container"; d.style.width = width; return d; } function loopCreateAndAppend(numNested, create, target) { for(var i = 0; i < numNested; i++) { var d = create(); target.appendChild(d); } return target; } var numElements = 200; loopCreateAndAppend(numElements, createDiv.bind(null, numElements), document.getElementById("aligner")); (function listenToResize() { var erd = elementResizeDetectorMaker({ strategy: "scroll" }); console.time("install"); erd.listenTo({ callOnAdd: false, onReady: function onReady() { console.timeEnd("install"); console.log("ready"); } }, $(".container"), onElementResize); })(); }); </script> </body> </html>