JavaScript响应式设计需结合resize节流与matchMedia:先用throttle控制resize高频触发,再用matchMedia精准监听断点变化,并在初始化和卸载时分别执行与清理。

JavaScript 响应式设计的核心不是仅靠 CSS 媒体查询,而是让 JS 行为能随视口尺寸动态调整。监听窗口大小变化是其中最基础也最关键的一步。
浏览器的 window 对象提供 resize 事件,只要用户改变浏览器窗口宽度或高度,就会触发:
window.addEventListener('resize', handler)
function handleResize() {
console.log('当前宽度:', window.innerWidth);
}
window.addEventListener('resize', handleResize);频繁执行重计算、DOM 操作或请求时,不节流会导致卡顿甚至页面崩溃:
throttle 或现代浏览器的 requestAnimationFrame 方案function throttle(fn, delay) {
let last = 0;
return function(...args) {
const now = Date.now();
if (now - last > delay) {
fn.apply(this, args);
last = now;
}
};
}
<p>const throttledResize = throttle(() => {
if (window.innerWidth < 768) {
document.body.classList.add('mobile');
} else {
document.body.classList.remove('mobile');
}
}, 150);</p><p>window.addEventListener('resize', throttledResize);立即学习“Java免费学习笔记(深入)”;
matchMedia 允许 JS 直接读取 CSS 媒体查询状态,比单纯监听 resize 更语义化、更可靠:
(max-width: 767px)),自动回调innerWidth
const mediaQuery = window.matchMedia('(max-width: 767px)');
<p>function onMobileChange(e) {
if (e.matches) {
console.log('进入移动端视图');
} else {
console.log('退出移动端视图');
}
}</p><p>// 立即执行一次
onMobileChange(mediaQuery);</p><p>// 监听变化
mediaQuery.addListener(onMobileChange); // 旧 API
// 或推荐用 modern 方式:
// mediaQuery.addEventListener('change', onMobileChange);真实场景中往往需要兼顾初始化、变化响应和性能:
matchMedia 处理明确断点行为(如菜单折叠、组件切换)resize 处理连续变化相关逻辑(如画布重绘、滚动视差)以上就是如何实现javascript响应式设计_如何监听窗口大小变化的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号