当前位置:   article > 正文

vue3监听某个dom元素宽高变化_vue3监听元素宽度变化

vue3监听元素宽度变化

vue3监听需要读取dom的ref实例。

  1. <div class="right" ref="myButton">我要变化宽度</div>
  2. <script setup lang="ts">
  3. const myButton = ref(null);
  4. let observer: ResizeObserver | null = null;
  5. onMounted(() => {
  6. observer = new ResizeObserver(handleResize);
  7. observer.observe(myButton.value);
  8. });
  9. const handleResize = (entries: any) => {
  10. for (const entry of entries) {
  11. const { width, height } = entry.contentRect;
  12. console.log(`宽度:${width}px,高度:${height}px`);
  13. // 这里可以执行针对宽高变化的操作
  14. }
  15. };
  16. onUnmounted(() => {
  17. // 在组件销毁前取消观察
  18. if (observer) {
  19. observer.disconnect();
  20. }
  21. });
  22. </script>

如果要在最后一次进行操作的话可以加一个定时器。先清除上一次的定时器,最后再执行一次定时器,这样就会在最后的宽高执行了。适用与需要监听的dom元素在改变宽高时有过度效果的情况下。

  1. const myButton = ref(null);
  2. let observer: ResizeObserver | null = null;
  3. let resizeTimer: any = null;
  4. onMounted(() => {
  5. initG6();
  6. observer = new ResizeObserver(handleResize);
  7. observer.observe(myButton.value);
  8. });
  9. const handleResize = (entries: any) => {
  10. clearTimeout(resizeTimer);
  11. resizeTimer = setTimeout(() => {
  12. for (const entry of entries) {
  13. const { width, height } = entry.contentRect;
  14. console.log(`宽度:${width}px,高度:${height}px`);
  15. graph.changeSize(width, height);
  16. // 这里可以执行针对宽高变化的操作
  17. }
  18. }, 200);
  19. };
  20. onUnmounted(() => {
  21. // 在组件销毁前取消观察
  22. if (observer) {
  23. observer.disconnect();
  24. }
  25. });

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/223146
推荐阅读
相关标签
  

闽ICP备14008679号