vue+element项目实时监听div宽度的变化

 更新时间:2024年08月07日 10:10:25   作者:随便起的名字也被占用  
这篇文章主要介绍了vue+element项目里实时监听某个div宽度的变化,然后执行相应的事件,本文结合示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧

背景:

vue项目中用到echarts图表,页面上有侧边栏,侧边栏收缩图表不能自适应,想通过监听内容部分的宽度让图表resize,试过window带的resize,只能监听浏览器窗口大小变化,为了监听某元素区域的变化而使echarts的尺寸重置。

本次解决采用 element-resize-detector 可以完美的解决

思路:因为收缩侧边栏的时候右侧的区域会自动适应,但是echarts不会随之改变

element提供的 element-resize-detector  可以轻松解决问题的存在

第一步:在项目中安装 element-resize-detector 

npm install element-resize-detector

第二步:在项目中使用

   html

<div id="test">
    <div id="eChart">
</div>

(1)script引入

<script src="node_modules/element-resize-detector/dist/element-resize-detector.min.js"></script>
// With default options (will use the object-based approach).
var erd = elementResizeDetectorMaker();
// With the ultra fast scroll-based approach.
// This is the recommended strategy.
var erdUltraFast = elementResizeDetectorMaker({
  strategy: "scroll" //<- For ultra performance.
});
//监听元素size变化,触发响应事件
erd.listenTo(document.getElementById("test"), function(element) {
  var width = element.offsetWidth;
  var height = element.offsetHeight;
  console.log("Size: " + width + "x" + height);
});

(2)require 引入使用,在cli项目中使用,需要用到的页面 ***.vue 引入

var elementResizeDetectorMaker = require("element-resize-detector")

       在mounted中启用

 var erd = elementResizeDetectorMaker()
    erd.listenTo(document.getElementById("test"), function (element) {
      var width = element.offsetWidth
      var height = element.offsetHeight
      that.$nextTick(function () {
        console.log("Size: " + width + "x" + height)
        //使echarts尺寸重置
        that.$echarts.init(document.getElementById("eChart")).resize()
      })
    })

因为gif图为录屏所以导航栏比较卡顿,勉强看一下哦 

附大GIF图压缩工具地址:https://ezgif.com/resize/ezgif-1-d76f5cf7b36f.gif 

基本解决问题,有更好的方案,欢迎留言指导,谢谢

更新  自定义指令方法

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__);
    }
  }
}
//然后在html中
<div v-resize="resize"></div> // 绑定的resize是一个函数
//在methods中
resize() {  // 当宽高变化时就会执行
  //执行某些操作
}

到此这篇关于vue+element项目里实时监听某个div宽度的变化,然后执行相应的事件的文章就介绍到这了,更多相关vue element监听div宽度变化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue3响应式高阶用法之shallowReadonly()使用

    Vue3响应式高阶用法之shallowReadonly()使用

    在前端开发中,Vue3的shallowReadonly() API允许开发者创建部分只读的状态,这对于保持顶层属性不变而内部属性可变的场景非常有用,本文将详细介绍 shallowReadonly() 的使用方法及其应用场景,具有一定的参考价值,感兴趣的可以了解一下
    2024-09-09
  • vue2.0 + element UI 中 el-table 数据导出Excel的方法

    vue2.0 + element UI 中 el-table 数据导出Excel的方法

    下面小编就为大家分享一篇vue2.0 + element UI 中 el-table 数据导出Excel的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • vue.js实现图书管理功能

    vue.js实现图书管理功能

    这篇文章主要为大家详细介绍了vue.js实现图书管理功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • 基于vue实现图片验证码倒计时60s功能

    基于vue实现图片验证码倒计时60s功能

    这篇文章主要介绍了基于vue实现图片验证码倒计时60s功能,本文通过截图实例代码的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • Vue检测屏幕变化来改变不同的charts样式实例

    Vue检测屏幕变化来改变不同的charts样式实例

    这篇文章主要介绍了Vue检测屏幕变化来改变不同的charts样式实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • vue3+vite+axios 配置连接后端调用接口的实现方法

    vue3+vite+axios 配置连接后端调用接口的实现方法

    这篇文章主要介绍了vue3+vite+axios 配置连接后端调用接口的实现方法,在vite.config.ts文件中添加配置,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • Vue中使用sass实现换肤功能

    Vue中使用sass实现换肤功能

    这篇文章主要介绍了Vue中使用sass实现换肤功能,实现此功能用到了三个主要文件(base.scss、mixin.scss、varibale.scss),需要的朋友可以参考下
    2018-09-09
  • vue+element项目实时监听div宽度的变化

    vue+element项目实时监听div宽度的变化

    这篇文章主要介绍了vue+element项目里实时监听某个div宽度的变化,然后执行相应的事件,本文结合示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2024-08-08
  • 掌握Qwik.js,轻松应对前端SSR渲染问题

    掌握Qwik.js,轻松应对前端SSR渲染问题

    掌握Qwik.js,轻松应对前端SSR渲染问题!本指南将为你揭示如何使用这款强大的框架,让你在前端开发中游刃有余
    2023-12-12
  • 使用Vue如何写一个双向数据绑定(面试常见)

    使用Vue如何写一个双向数据绑定(面试常见)

    这篇文章主要介绍了使用Vue如何写一个双向数据绑定,在前端面试过程中经常会问到,文中主要实现v-model,v-bind 和v-click三个命令,其他命令也可以自行补充。需要的朋友可以参考下
    2018-04-04

最新评论