推荐使用 window.addeventlistener('resize', handler) 监听窗口变化,需配合节流(如 debounce 延迟 100–200ms)和初始化调用 handler,以避免卡顿与初始尺寸错乱;应优先读取 innerwidth/innerheight 获取视口尺寸。

直接用 window.addEventListener('resize', handler) 监听,但必须配合节流和初始化调用,否则容易卡顿或初始尺寸错乱。
用标准事件监听 resize
浏览器原生支持窗口大小变化事件,推荐使用事件监听器而非 onresize 属性:
- 写法统一、可多次绑定,便于模块化管理
- 避免覆盖已有 resize 处理逻辑(onresize 是单值属性)
- 示例:
window.addEventListener('resize', updateLayout)
必须加节流控制触发频率
拖拽窗口时 resize 会高频触发(每秒数十次),不节流会导致重绘卡顿、计算浪费:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 建议用 debounce(防抖),延迟 100–200ms 执行最终回调
- 节流函数需返回新函数,并在 addEventListener 中传入该函数
- 不要只依赖节流——后续处理逻辑本身也得轻量,比如避免反复 querySelector 或强制同步布局
首次加载要手动触发一次
resize 事件只响应“变化”,不通知“初始状态”。页面一打开,视口尺寸已存在,但事件不会自动触发:
- 在绑定事件后,立即调用一次 handler,例如
updateLayout() - 也可放在
DOMContentLoaded或load后执行,确保 DOM 就绪 - 漏掉这步,图表、轮播图、自适应容器常以默认尺寸渲染,出现错位或空白
优先读取 innerWidth / innerHeight
获取当前可用视口尺寸,应以这两个属性为准:
-
window.innerWidth:含滚动条的 CSS 像素宽度,已自动排除垂直滚动条占位 -
window.innerHeight:同理,为可用高度,不含地址栏、工具栏 - 它们跨平台一致,移动端 Safari/Chrome 也可靠,适合响应式判断
- 避免用
document.documentElement.clientWidth,受 DOCTYPE、缩放、怪异模式影响大
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










