├── .gitignore ├── README.md ├── index.js └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules 3 | npm-debug.log 4 | .DS_Store 5 | package-lock.json 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # simple-element-resize-detector [![NPM](https://img.shields.io/npm/v/simple-element-resize-detector.svg?style=flat)](https://www.npmjs.org/package/simple-element-resize-detector) 2 | 3 | 4 | Observes resizing of an element using a hidden iframe. 5 | 6 | [**JSFiddle Demo**](https://jsfiddle.net/developit/62Lgh3wz/) 7 | 8 | ## Installation 9 | 10 | ```sh 11 | npm i -S simple-element-resize-detector 12 | ``` 13 | 14 | 15 | ## Usage 16 | 17 | ```js 18 | import observeResize from 'simple-element-resize-detector'; 19 | 20 | // any DOM element that can have children 21 | let element = document.createElement('div'); 22 | 23 | // listen for resize 24 | observeResize(element, () => { 25 | console.log('new size: ', { 26 | width: element.clientWidth, 27 | height: element.clientHeight 28 | }); 29 | }); 30 | ``` 31 | 32 | To stop observing resize events, simply remove the returned detector frame: 33 | 34 | ```js 35 | let detector = observeResize(el, () => {}); 36 | 37 | detector.remove(); 38 | 39 | // or, for better browser compatibility: 40 | // detector.parentNode.removeChild(detector) 41 | ``` 42 | 43 | ## Notes 44 | 45 | * `element` passed to `observeResize()` must have `position: relative` style to be correctly observed, otherwise nearest relative ancestor will be observed instead. 46 | * This library uses `