当前位置: 首页 > news >正文

【Vue】vue3 中使用 ResizeObserver 监听元素的尺寸宽度变化

要监听 div 宽度的变化,可以使用 ResizeObserver 接口。ResizeObserver 允许你观察一个或多个元素的尺寸变化,并在发生变化时执行回调函数。这种方法比使用 MutationObserver 更专注于尺寸变化,且不受元素属性变化的影响。

使用 ResizeObserver

首先,创建一个 ResizeObserver 实例,并传入一个回调函数,该函数将在元素尺寸变化时被调用。在回调函数中,你可以访问每个观察到的元素的新尺寸。

const resizeObserver = new ResizeObserver(entries => {entries.forEach(entry => {const { width, height } = entry.contentRect;console.log(`Element resized: Width=${width}, Height=${height}`);});
});// 假设你想观察的元素是一个具有特定ID的div
const observedElement = document.querySelector('#yourDivId');// 开始观察该元素
resizeObserver.observe(observedElement);// 当需要停止观察时,可以调用 disconnect 方法
// resizeObserver.disconnect();

在 vue3 中的使用

const container = ref(null);
let observer;
let resizeTimer;onMounted(() => {createObserver();
});onUnmounted(() => {if (observer) {observer.disconnect();}
});function createObserver() {observer = new ResizeObserver((entries) => {clearTimeout(resizeTimer);resizeTimer = setTimeout(() => {for (const entry of entries) {const { width, height } = entry.contentRect;console.log(width);}}, 200);});observer.observe(container.value);
}
<div ref="container"></div>

注意事项

  • ResizeObserver 是现代浏览器支持的 API,不是所有浏览器都支持。请确保你的目标浏览器支持此 API,或者使用 polyfill 来提供跨浏览器兼容性。
  • ResizeObserver 只能观察到元素的尺寸变化,不能检测到元素的内容变化或内部布局变化。
  • 如果你需要在元素的内容或布局变化时也触发事件,可能需要结合使用其他技术,如 MutationObserver
http://www.lryc.cn/news/416742.html

相关文章:

  • 信息安全专业好吗?
  • 梧桐数据库(WuTongDB):数据库中元数据表的常见信息
  • 在 Linux 9 上安装 Oracle 19c:克服兼容性问题 (INS-08101)
  • 【踩坑】pytorch中的索引与copy_结合不会复制数据及其解决方案
  • 十六、【Python】基础教程 - 【Flask】网络编程开发
  • C#初级——List 容器
  • serial靶机教程
  • 【Linux-MISC设备】
  • 【随笔】VRRP+MSTP
  • vue 动态增删行,并form表单校验(附v2\v3)
  • 计算机网络的基本概念
  • Python 爬虫项目实战三:GitHub 用户信息抓取与分析
  • xtrabackup搭建MySQL 8.0 主从复制
  • Java程序员接单分享
  • 【HarmonyOS NEXT星河版开发学习】小型测试案例01-今日头条置顶练习
  • C语言----计算开机时间
  • 批发行业进销存-登录适配 android 横竖屏幕 源码CyberWinApp-SAAS 本地化及未来之窗行业应用跨平台架构
  • js功能(1)
  • 微信小程序乡村医疗系统,源码、部署+讲解
  • 完美解决pip命令版本冲突导致对应版本模块包无法安装的问题
  • 5.1-软件工程基础知识-软件工程概述
  • 极简聊天室-websocket版
  • QT学生管理系统 开发文档
  • 【五大海内外高校支持】2024年数字经济与计算机科学国际学术会议(DECS2024)
  • VS项目打包成lib库并使用
  • 社交巨头与去中心化:解析Facebook在区块链的角色
  • MyBatis(学习记录)
  • QSpinbox
  • 分布式服务架构[原理、设计与实践]学习笔记
  • PDF发票解析并将信息回填到前端(1)后端解析PDF