Skip to content

ResizeObserver

ResizeObserver 是一个用于观察元素大小变化的 API,能够在元素的尺寸发生变化时执行回调函数。

构造函数

ResizeObserver() 创建并返回一个新的 ResizeObserver 对象。

常用方法

方法作用
observe通过该方法绑定要观察的元素
unobserve如果不再需要观察某个元素,可以该方法停止观察
js
// 创建一个 ResizeObserver 实例
const resizeObserver = new ResizeObserver((entries) => {
  entries.forEach(entry => {
    // 每次观察的元素发生大小变化时都会执行这个回调
    console.log('Element:', entry.target);
    console.log('New size:', entry.contentRect.width, entry.contentRect.height);
  });
});

// 选择要观察的元素
const element = document.querySelector('.my-element');

// 开始观察元素的尺寸变化
resizeObserver.observe(element);
// 在某个时刻停止观察
resizeObserver.unobserve(element);
示例

当vben左侧侧边栏宽度变化时,右侧的ECharts图表自适应页面宽度。

vue
<script setup lang="ts">
  let tabHolder: Element;
  onMounted(() => {
    tabHolder = document.querySelector('.ant-tabs-content-holder')!;
    resizeObserver = new ResizeObserver((entries: string | any[]) => {
      if (entries.length > 0) {
        // echars图表更新尺寸
        chart?.resize();
      }
    });
    resizeObserver.observe(tabHolder);
  });

  onUnmounted(() => {
    resizeObserver?.unobserve(tabHolder);
  });
</script>

Released under the MIT License.