ResizeObserver仅响应触发layout的content-box尺寸变化,需元素已挂载且可见;window.resize仅监听视口变化,不响应布局变动。

ResizeObserver 能实时响应元素 content-box 尺寸变化,但不是“监听任意大小变化”——它只对触发 layout 的宽高变更敏感,且必须确保元素已挂载、未被 display: none 或隐藏在未渲染的 Shadow DOM 中。
为什么 window.resize 完全不管用
给容器加 window.addEventListener('resize', ...) 后发现尺寸变了却没触发?正常。这个事件只响应浏览器视口(viewport)缩放或窗口拖拽,对以下常见场景完全无感:
- 侧边栏折叠导致父容器变窄,子元素 flex 自动重分配
- 动态插入一条列表项,撑开卡片高度
- Tabs 切换后,当前面板内容变多,高度增长
- CSS
max-width生效或visibility: hidden→visible切换
这些都不会触发 window.resize,但 ResizeObserver 全部覆盖。
实现 Markdown↔ HTML 互转,支持导出 PDF,用于用户请求的文档格式转换。
必须等元素挂载后再 observe
直接在脚本顶部写 ro.observe(document.getElementById('chart')) 很可能静默失败——因为 DOM 还没解析完,getElementById 返回 null。正确时机取决于你的环境:
- 纯 HTML:放在
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










