首页 > web前端 > js教程 > 正文

什么是resize observer_javascript中如何监听尺寸变化?

夢幻星辰
发布: 2025-12-15 22:49:03
原创
536人浏览过
ResizeObserver 是监听元素尺寸变化的原生 API,通过 observe() 监听、unobserve()/disconnect() 停止,支持多元素、精准响应 layout 尺寸变动,现代浏览器兼容良好,IE 需 polyfill 或降级方案。

什么是resize observer_javascript中如何监听尺寸变化?

ResizeObserver 是 JavaScript 中专门用来监听元素尺寸变化的 API,不用轮询、不依赖窗口 resize 事件,能精准响应元素宽高变动(包括由 CSS、JS 或内容变化引发的改变)。

ResizeObserver 的基本用法

创建实例时传入一个回调函数,该函数接收两个参数:entries(变化的观察项列表)和 observer(当前实例)。每个 entry 包含 target(被观察的元素)和 contentRect(最新尺寸信息)。

  • 调用 observe(element) 开始监听指定元素
  • 可同时观察多个元素,多次调用 observe 即可
  • unobserve(element) 停止监听单个元素,或 disconnect() 彻底停止所有监听

监听常见场景示例

比如监听一个卡片容器,当它因内部图片加载完成或文字换行而变高时,自动调整侧边栏高度:

const card = document.querySelector('.card');
const observer = new ResizeObserver(entries => {
  for (let entry of entries) {
    console.log('新宽度:', entry.contentRect.width);
    console.log('新高度:', entry.contentRect.height);
    // 这里写你的响应逻辑,比如重绘图表、调整布局等
  }
});
observer.observe(card);
登录后复制

注意兼容性和替代方案

现代浏览器(Chrome 64+、Firefox 69+、Safari 13.1+、Edge 79+)原生支持。IE 完全不支持,需用 polyfill(如 juggle/resize-observer)或降级为监听 window.resize + getBoundingClientRect 轮询(不推荐,性能差)。

Mureka
Mureka

Mureka是昆仑万维最新推出的一款AI音乐创作工具,输入歌词即可生成完整专属歌曲。

Mureka 1091
查看详情 Mureka

立即学习Java免费学习笔记(深入)”;

ResizeObserver 不监听滚动、透明度、z-index 等非尺寸属性变化,也不响应父容器 transform 缩放带来的视觉尺寸变化——它只关心 layout 尺寸(content box)的真实变动。

基本上就这些。用对了,页面自适应逻辑会干净很多。

以上就是什么是resize observer_javascript中如何监听尺寸变化?的详细内容,更多请关注php中文网其它相关文章!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号