index.es.mjs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. var index = (function (element, listener) {
  2. var expand = document.createElement('_');
  3. var shrink = expand.appendChild(document.createElement('_'));
  4. var expandChild = expand.appendChild(document.createElement('_'));
  5. var shrinkChild = shrink.appendChild(document.createElement('_'));
  6. var lastWidth = void 0,
  7. lastHeight = void 0;
  8. shrink.style.cssText = expand.style.cssText = 'height:100%;left:0;opacity:0;overflow:hidden;pointer-events:none;position:absolute;top:0;transition:0s;width:100%;z-index:-1';
  9. shrinkChild.style.cssText = expandChild.style.cssText = 'display:block;height:100%;transition:0s;width:100%';
  10. shrinkChild.style.width = shrinkChild.style.height = '200%';
  11. element.appendChild(expand);
  12. test();
  13. return stop;
  14. function test() {
  15. unbind();
  16. var width = element.offsetWidth;
  17. var height = element.offsetHeight;
  18. if (width !== lastWidth || height !== lastHeight) {
  19. lastWidth = width;
  20. lastHeight = height;
  21. expandChild.style.width = width * 2 + 'px';
  22. expandChild.style.height = height * 2 + 'px';
  23. expand.scrollLeft = expand.scrollWidth;
  24. expand.scrollTop = expand.scrollHeight;
  25. shrink.scrollLeft = shrink.scrollWidth;
  26. shrink.scrollTop = shrink.scrollHeight;
  27. listener({ width: width, height: height });
  28. }
  29. shrink.addEventListener('scroll', test);
  30. expand.addEventListener('scroll', test);
  31. }
  32. function unbind() {
  33. shrink.removeEventListener('scroll', test);
  34. expand.removeEventListener('scroll', test);
  35. }
  36. function stop() {
  37. unbind();
  38. element.removeChild(expand);
  39. }
  40. });
  41. export default index;