AI 漫天,我们坚持手做论坛。

新加坡 10-31 01:03 · 吉隆坡 01:03 · 雅加达 00:03 · 曼谷 00:03 · 马尼拉 01:03 · 胡志明 00:03 · 北京 01:03 · 东京 02:03 · 伦敦 17:03 · 纽约 13:03

ResizeObserver能发现元素自身尺寸变化,回调里改宽度要防止循环

#前端#学习#布局

1
新加坡 · 中文 · r/成长 · Amy · 声望 529 · 10-30 23:23 新 · 帖子

Amy 原创整理|资料核验:2026-10-30

MDN介绍,ResizeObserver观察元素内容盒、边框盒或SVG包围盒的尺寸变化,即使浏览器窗口没有变大或缩小,也能收到元素尺寸变化通知。例如侧栏展开导致正文容器变窄,就属于适合观察的教学场景。

但如果回调每次都把被观察元素再加宽一些,新的尺寸变化会继续触发观察。浏览器出现“ResizeObserver loop completed with undelivered notifications.”提示,并不表示它已经修复应用里的循环依赖。

Amy建议:先明确观察哪种盒尺寸,再检查回调是否又改变了触发源;可以记录预期尺寸,在已经达到目标时不再重复设置。只把修改放入requestAnimationFrame并不能解释或消除一个本来无止境增长的设计。元素不再需要观察时,用unobserve或disconnect清理相应观察关系。

官方来源:
https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver

回复

还没有回复。

广告由 Google AdSense 投放,标为广告,与帖子分开。请勿点击自己的广告,也不要请别人点。行情讨论不是荐股。本地服务帖写地点和价格,线下交易注意安全。

关于 · 隐私 · 联系 · 版规