detached.html 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <script src="../build/element-resize-detector.js"></script>
  5. <style>
  6. html, body {
  7. box-sizing: border-box;
  8. }
  9. </style>
  10. </head>
  11. <body>
  12. <div id="container">
  13. <button id="add-detached-object">Add detached (object)</button>
  14. <button id="add-detached-scroll">Add detached (scroll)</button>
  15. <button id="add-unrendered-object">Add unrendered (object)</button>
  16. <button id="add-unrendered-scroll">Add unrendered (scroll)</button>
  17. <button id="add-detached-unrendered-object">Add detached unrendered (object)</button>
  18. <button id="add-detached-unrendered-scroll">Add detached unrendered (scroll)</button>
  19. </div>
  20. <script>
  21. var container = document.querySelector('#container');
  22. var erdObject = elementResizeDetectorMaker({
  23. strategy: "object",
  24. debug: true
  25. });
  26. var erdScroll = elementResizeDetectorMaker({
  27. strategy: "scroll",
  28. debug: true
  29. });
  30. function addDetached(erd, container, content) {
  31. console.log("Creating detached element");
  32. var div = document.createElement("div");
  33. div.innerHTML = content;
  34. div.style.background = "grey";
  35. div.style.margin = "10px";
  36. erd.listenTo({
  37. callOnAdd: false
  38. }, div, function (el) {
  39. var style = getComputedStyle(el);
  40. console.log('el change size: ', style.width, style.height);
  41. });
  42. setTimeout(function () {
  43. console.log('Adding element to DOM');
  44. container.appendChild(div);
  45. }, 2000);
  46. }
  47. function addUnrendered(erd, container, content, n) {
  48. function add(erd, container, content) {
  49. console.log("Creating unrendered element");
  50. var div = document.createElement("div");
  51. div.innerHTML = content;
  52. div.style.background = "grey";
  53. div.style.margin = "10px";
  54. div.style.display = "none";
  55. div.style.position = "relative";
  56. container.appendChild(div);
  57. erd.listenTo({
  58. callOnAdd: false
  59. }, div, function (el) {
  60. var style = getComputedStyle(el);
  61. console.log('el change size: ', style.width, style.height);
  62. });
  63. return div;
  64. }
  65. var divs = [];
  66. for (var i = 0; i < n; i++) {
  67. divs.push(add(erd, container, content));
  68. }
  69. setTimeout(function () {
  70. console.log('rendering elements');
  71. divs.forEach(function (div) {
  72. div.style.display = "block";
  73. });
  74. }, 2000);
  75. }
  76. function addDetachedUnrendered(erd, container, content, n) {
  77. function add(erd, container, content) {
  78. console.log("Creating detached unrendered element");
  79. var div = document.createElement("div");
  80. div.innerHTML = content;
  81. div.style.background = "grey";
  82. div.style.margin = "10px";
  83. div.style.display = "none";
  84. div.style.position = "relative";
  85. erd.listenTo({
  86. callOnAdd: false
  87. }, div, function (el) {
  88. var style = getComputedStyle(el);
  89. console.log('el change size: ', style.width, style.height);
  90. });
  91. return div;
  92. }
  93. var divs = [];
  94. for (var i = 0; i < n; i++) {
  95. divs.push(add(erd, container, content));
  96. }
  97. setTimeout(function () {
  98. console.log('Adding element to DOM');
  99. divs.forEach(function (div) {
  100. container.appendChild(div);
  101. });
  102. }, 1000);
  103. setTimeout(function () {
  104. console.log('rendering elements');
  105. divs.forEach(function (div) {
  106. div.style.display = "block";
  107. });
  108. }, 2000);
  109. }
  110. document.querySelector("#add-detached-object").onclick = addDetached.bind(null, erdObject, container, "detached object");
  111. document.querySelector("#add-detached-scroll").onclick = addDetached.bind(null, erdScroll, container, "detached scroll");
  112. document.querySelector("#add-unrendered-object").onclick = addUnrendered.bind(null, erdObject, container, "unrendered object", 1);
  113. document.querySelector("#add-unrendered-scroll").onclick = addUnrendered.bind(null, erdScroll, container, "unrendered scroll", 1);
  114. document.querySelector("#add-detached-unrendered-object").onclick = addDetachedUnrendered.bind(null, erdObject, container, "detached unrendered object", 1);
  115. document.querySelector("#add-detached-unrendered-scroll").onclick = addDetachedUnrendered.bind(null, erdScroll, container, "detached unrendered scroll", 1);
  116. </script>
  117. </body>
  118. </html>