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

鼠标控制dom元素的大小。采用ResizeObserver——监听元素大小的变化

ResizeObserver是浏览器提供的API,用于替代window.resize事件监听元素尺寸变化,避免性能问题。它能精确观察到Element内容区域或SVGElement边框的变化。在示例中展示了如何在Vue应用中使用ResizeObserver监听div元素的尺寸,并实时更新其内容。同时,需要注意CSS的resize属性需设置为hidden以使功能生效。

这段代码的目的是使用 ResizeObserver 监听一个目标元素的大小变化,并根据目标元素的新尺寸调整 Cesium 画布 (canvas) 的大小。以下是代码的详细解释:

创建 ResizeObserver 实例 

 const resizeObserver = new ResizeObserver((entries) => {for (let entry of entries) {const target = entry.target;const width = target.clientWidth;const height = target.clientHeight;const cesiumCanvas = document.querySelector(`#${this.cesiumContainer} canvas`);// 设置 Cesium 画布的大小cesiumCanvas.style.width = width + "px";cesiumCanvas.style.height = height + "px";}});

 

  • ResizeObserver 是一个用于观察元素尺寸变化的 API。
  • 回调函数接收一个 entries 数组,每个 entry 代表一个被观察的目标元素及其变化。
  • entry.target 是发生变化的元素,clientWidth 和 clientHeight 提供该元素的当前宽度和高度。
  • document.querySelector 用于选择特定的 canvas 元素,并更新其 style 属性来设置宽度和高度,使其匹配目标元素的尺寸。

选择目标元素并开始观察 

    // 监听的目标元素const targetElement = document.getElementById(this.cesiumContainer);resizeObserver.observe(targetElement);
  • document.getElementById 根据 this.cesiumContainer 变量的值(应该是一个字符串)选择目标元素。
  • resizeObserver.observe(targetElement) 开始观察目标元素的大小变化。

补充:

ResizeObserver.disconnect()

取消特定观察者目标上所有对 Element 的监听。

ResizeObserver.observe()

开始对指定 Element 的监听。

ResizeObserver.unobserve()

结束对指定 Element 的监听。

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • HarmonyOS开发实战( Beta5版)合理使用动画丢帧规范实践
  • SpringBoot+Vue实现大文件上传(断点续传-后端控制(一))
  • 卷积神经网络与小型全连接网络在MNIST数据集上的对比
  • 设计模式—2—单例模式
  • 基于 XILINX FPGA 的 Cameralink Full 模式相机采集系统技术实施方案研究报告
  • WebRTC协议下的视频汇聚融合技术:EasyCVR视频技术构建高效视频交互体验
  • 计算机网络(八股文)
  • 微信小程序rpx和px关系
  • 系统调用之文件操作详解
  • 【科研达人3个月搞定SCI论文:计算机视觉研究的实用计划】
  • 2024高教社杯数学建模国赛ABCDE题选题建议+初步分析
  • 【系统】Linux系统下载 Ubuntu/Debian/Deepin
  • python-Flask搭建简易登录界面
  • C#读取Excel的方法总结
  • Python函数的编写
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • Apache Spark Streaming 使用实例
  • CentOS6 编译安装 redis-3.2.3
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • happypack两次报错的问题
  • in typeof instanceof ===这些运算符有什么作用
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • Shell编程
  • springMvc学习笔记(2)
  • windows下使用nginx调试简介
  • Zsh 开发指南(第十四篇 文件读写)
  • 搭建gitbook 和 访问权限认证
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 力扣(LeetCode)22
  • 爬虫模拟登陆 SegmentFault
  • 区块链共识机制优缺点对比都是什么
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 数据可视化之 Sankey 桑基图的实现
  • 通过几道题目学习二叉搜索树
  • 消息队列系列二(IOT中消息队列的应用)
  • 一、python与pycharm的安装
  • 再次简单明了总结flex布局,一看就懂...
  • 湖北分布式智能数据采集方法有哪些?
  • ​14:00面试,14:06就出来了,问的问题有点变态。。。
  • # Redis 入门到精通(七)-- redis 删除策略
  • #VERDI# 关于如何查看FSM状态机的方法
  • (2020)Java后端开发----(面试题和笔试题)
  • (TOJ2804)Even? Odd?
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (面试必看!)锁策略
  • (十)T检验-第一部分
  • (算法)Game
  • (原)Matlab的svmtrain和svmclassify
  • (转)nsfocus-绿盟科技笔试题目
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET CORE 第一节 创建基本的 asp.net core
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例