自定义指令和某元素宽高变化时触发页面resize

207 阅读1分钟

自定义指令

代码实现目的:使用自定义在某元素上,让某元素宽高变化时触发页面resize,特别是页面有图表元素,页面窗口大小不变,但是某些页面联动效果,页面一些元素大小改变,图表要resize一下,也可以延申一些其他的效果和自定义,记录一下。

vue部分

<div v-resize="resize"></div>

js部分

export default { directives: { // 使用局部注册指令的方式 resize: { // 指令的名称 bind(el, binding) { // el为绑定的元素,binding为绑定给指令 的对象 let width = '', height = ''; function isReize() { const style=document.defaultView.getComputedStyle(el); if (width !== style.width || height !== style.height) { binding.value(); // 关键 } width = style.width; height = style.height; } el.__vueSetInterval__ = setInterval(isReize, 300); }, unbind(el) { clearInterval(el.__vueSetInterval__); } } }, methods: { resize() { // 当宽高变化时就会执行 //执行某些操作 我这里是某元素宽高让页面resize let resizeEvent = document.createEvent('Event'); resizeEvent.initEvent('resize', true, true); window.dispatchEvent(resizeEvent); this.filterIndex=null } } }