之前监听元素尺寸变化能够方便的使用 jQuery
监听元素的 resize
事件:html
$('#box').on('resize', function () { console.log('resize') });
可是后续版本由于性能不佳因此被取消了,本身实现费时费力,因此这里介绍一个开源的插件 element-resize-detector。git
插件的下载地址: https://github.com/wnr/element-resize-detector/tree/master/dist
能够选择压缩版和未压缩版,将文件下载到本地。github
建立示例
建立一个 html
文件,放入一个红色的正方形 div
:npm
<div id="box" style="width:300px;height:300px;background:red;"></div>
引入 element-resize-detector
插件:浏览器
<script src="element-resize-detector.min.js"></script>
增长一个简单的逻辑,点击盒子的时候宽度由 300px
变成 500px
:函数
document.getElementById('box').addEventListener('click', e => { e.target.style.width = '500px'; });
实例化插件:性能
const erd = elementResizeDetectorMaker();
监听该元素,当元素变化时,回调函数的参数是变化的元素,获取该元素的宽高:测试
erd.listenTo(document.getElementById('box'), element => { const width = element.offsetWidth; const height = element.offsetHeight; console.log("Size: " + width + "x" + height); });
测试
在浏览器中打开该页面:spa
点击红色的盒子,盒子变宽:插件
查看控制台,弹出:
监听盒子大小变化成功。