首页 > 其他分享 >vue3中元素盒子尺寸变化时的问题

vue3中元素盒子尺寸变化时的问题

时间:2025-01-23 17:34:56浏览次数:1  
标签:el 绑定 盒子 map 元素 尺寸 vue3 entry const

sizeDirect.js

  

// 此案例可以作为Vue自定义指令的参考,实现元素尺寸变化的监听,并执行回调函数。
// 注意:此案例仅供参考,具体业务场景需要根据实际情况进行修改。

const map = new WeakMap() // 弱引用,可以被垃圾回收机制回收,可以用来保存DOM节点,不容易造成内存泄漏

const ob = new ResizeObserver((entries)=>{
   for(const entry of entries) {
       // 运行回调 
        console.log(entry,'entry');
        const handle = map.get(entry.target) // 获取绑定的值
        handle && handle({   // 执行回调,传递参数
            width:entry.contentRect.width,  // 元素的宽高  
            height:entry.contentRect.height  // 元素的宽高
        }) // 执行绑定的值
    }
})


export default{
    mounted(el,binding){
        ob.observe(el)  // 监听元素尺寸变化
        map.set(el,binding.value)  // 保存绑定的值
    },
    unmounted(el){
        ob.unobserve(el) // 停止监听
        // map.delete(el) // 删除绑定的值,上面使用的是WeakMap,所以这边不需要手动删除  
    }
}

 

标签:el,绑定,盒子,map,元素,尺寸,vue3,entry,const
From: https://www.cnblogs.com/xinheng/p/18688246

相关文章

  • vue3+ts+vite适配低版本浏览器白屏
    前言vite需要引入多个包来适配低版本浏览器,如果只是用网上常规的@vitejs/plugin-legacy来配置还是会出现部分android9的出现白屏问题 第一步package.json引入 "core-js":"^3.39.0","regenerator-runtime":"^0.14.1","@vitejs/plugin-legacy":"^5.4.2&qu......
  • Vue3 —— 安装及配置环境
    Vue官网:https://vuejs.org/配置环境终端:Linux和Mac上可以用自带的终端。Windows上推荐用powershell或者cmd。GitBash有些指令不兼容。安装Node.js:安装地址:https://nodejs.org/en/安装@vue/cli:执行:npmi-g@vue/cli如果执行后面的操作有bug,可能是......
  • 2025-1-20-盒子模型-弹性盒子模型
    重新学一下巩固,之前发的看不了,本来还想着直接看呢盒子模型width,height是宽高,padding是内边距,如果里边有文本的话一般是贴着左上方,但是有内边距就不会,类似下边的演示图;border是内外之间边框,就是给宽高之外加一层;margin是外边距,可以理解为是你构造的边框距离这个页面的距离div{......
  • vue3 + leaflet@1.94---海量点位加载
    import{CanvasMarkerLayer}from'@panzhiyue/leaflet-canvasmarker'importimgfrom'@/assets/image/logo.png'onMounted(()=>{window.customMap=mapInit.initMap({target:'map-container',coordinate:[36.09,1......
  • vue3 + leaflet@1.94---带箭头的轨迹线
    import'leaflet-polylinedecorator'//箭头线(引入第三方插件)onMounted(()=>{window.customMap=mapInit.initMap({target:'map-container',coordinate:[36.09,120.35]})constdrawnItems=newL.FeatureGroup()window.custom......
  • 【vue3组件】【大文件上传】【断点续传】支持文件分块上传,能够在上传过程中暂停、继续
    一、概述本示例实现了一个基于Vue3和TypeScript的断点上传功能。该功能支持文件分块上传,能够在上传过程中暂停、继续上传,并且支持检测已经上传的分块,避免重复上传,提升上传效率。以下是关键的技术点与实现流程:文件分块:将大文件分成多个小块,每块的大小是固定的(例如5MB)......
  • Springboot+vue3驾考在线学习与测试系统
    目录具体实现截图技术介绍开发核心技术介绍:技术创新点vue3和vue2的区别:核心代码部分展示非功能需求分析系统开发流程软件测试源码获取具体实现截图技术介绍选用SpringBoot作为开发框架,简化项目结构,提高网站性能和易维护性。采用MVC模式将数据对象、业务逻辑以......
  • 字玩FontPlayer开发笔记12 Vue3撤销重做功能
    字玩FontPlayer开发笔记12Vue3撤销重做功能字玩FontPlayer是笔者开源的一款字体设计工具,使用Vue3+ElementUI开发,源代码:github|gitee笔记撤销重做功能是设计工具必不可少的模块,以前尝试使用成熟的库实现撤销重做功能,但是细节问题有很多,就一直搁置了。这几天着手自己......
  • Vue3 在defineProps中某个属性的默认值使用多语言i18n 异常defineProps()` in <script
    原代码<scriptsetuplang="ts">constprops=defineProps({modelValue:{type:Array,default:[]},typeName:{type:String,default:t('TypeName')},disabled:{type:Boolean,default:false......
  • vue3新增API
    Vue3引入了许多新的API和特性,以下是一些主要的新增API列表:组合式APIsetup:组合式API的入口函数。ref:创建一个响应式的引用对象。reactive:将一个普通对象转换为响应式对象。computed:用于定义计算属性。watch和watchEffect:用于侦听响应式数据的变化。toRefs和toR......