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

vue 中监听页面尺寸变化就调用函数

方法一:使用 window.onresize 结合 Vue 实例的生命周期钩子(不推荐,存在覆盖风险)

虽然可以直接使用原生的 window.onresize 事件来监听窗口大小变化,但这种方式在 Vue 项目中有一些局限性,因为如果在多个地方都这样使用,后赋值的会覆盖前面的,容易导致一些不可预期的问题。不过简单了解一下其基本实现方式如下:

<template><div><!-- 这里放置页面内容 --></div>
</template><script>
export default {data() {return {windowWidth: document.documentElement.clientWidth,windowHeight: document.documentElement.clientHeight};},mounted() {const that = this;window.onresize = function () {that.windowWidth = document.documentElement.clientWidth;that.windowHeight = document.documentElement.clientHeight;that.handleResize(); // 调用处理尺寸变化的函数};},methods: {handleResize() {console.log(`窗口宽度: ${this.windowWidth}px,高度: ${this.windowHeight}px`);// 在这里可以添加更多基于新尺寸的业务逻辑,比如根据不同尺寸显示不同的组件等}}
};
</script>

方法二:使用 window.addEventListener('resize', callback)(推荐)

使用 addEventListener 可以避免覆盖已有 resize 事件监听器的问题,并且更符合现代 JavaScript 开发习惯,在 Vue 项目中也是更常用的方式。以下是示例代码:

<template><div><!-- 这里放置页面内容 --></div>
</template><script>
export default {data() {return {windowWidth: document.documentElement.clientWidth,windowHeight: document.documentElement.clientHeight};},mounted() {const that = this;window.addEventListener('resize', function () {that.windowWidth = document.documentElement.clientWidth;that.windowHeight = document.documentElement.clientHeight;that.handleResize();});},beforeDestroy() {window.removeEventListener('resize', this.handleResize); // 在组件销毁时移除监听器,避免内存泄漏},methods: {handleResize() {console.log(`窗口宽度: ${this.windowWidth}px,高度: ${this.windowHeight}px`);// 在这里添加基于新尺寸的业务逻辑}}
};
</script>

http://www.lryc.cn/news/485425.html

相关文章:

  • 全面解读 USB Key:定义、使用场景、加密技术及 Java 实现
  • ❤React-React 组件基础(类组件)
  • 8 软件项目管理
  • 【移除bpmn-js流程图中的logo图标】
  • Springboot集成ElasticSearch实现minio文件内容全文检索
  • ISAAC SIM踩坑记录--ROS2相机影像发布
  • CSS Module:告别类名冲突,拥抱模块化样式(5)
  • JavaSE常用API-日期(计算两个日期时间差-高考倒计时)
  • AutoDL上进行tensorboard可视化
  • 20.UE5UI预构造,开始菜单,事件分发器
  • 【C语言指南】C语言内存管理 深度解析
  • 前海华海金融创新中心的工地餐点探寻
  • 索引及练习
  • java版嘎嘎快充汽车单车充电系统源码系统jeecgboot
  • vueRouter路由切换时实现页面子元素动画效果, 左右两侧滑入滑出效果
  • MacOS编译hello_xr——记一次CMake搜索路径限制导致的ANDROID_NATIVE_APP_GLUE not found
  • 基于NI Vision和MATLAB的图像颜色识别与透视变换
  • 【Linux:IO多路复用(select、poll函数)
  • 计数排序(C语言)
  • LabVIEW弧焊参数测控系统
  • Android笔记(三十七):封装一个RecyclerView Item曝光工具——用于埋点上报
  • 【Linux】内核模版加载modprobe | lsmod
  • Android从Drawable资源Id直接生成Bitmap,Kotlin
  • 蓝桥杯——数组
  • 在Flutter中,禁止侧滑的方法
  • 黑盒测试案例设计方法的使用(1)
  • 第二十一章 TCP 客户端 服务器通信 - 客户端OPEN命令
  • pycharm报错:no module named cv2.cv2
  • Android音视频直播低延迟探究之:WLAN低延迟模式
  • docker 部署freeswitch(非编译方式)