Атрибут onresize тега <body>
Описание
Атрибут onresize позволяет задать JavaScript-код, который выполняется при изменении размеров окна браузера. Это событие полезно для создания адаптивных интерфейсов, которые должны реагировать на изменение доступного пространства.
<body onresize="handleWindowResize()">
<div id="size-info"></div>
<script>
function handleWindowResize() {
const width = window.innerWidth;
const height = window.innerHeight;
document.getElementById('size-info').innerHTML = `
Ширина окна: ${width}px
Высота окна: ${height}px `; // Адаптивные действия if (width < 768) { document.body.classList.add('mobile-view'); } else { document.body.classList.remove('mobile-view'); } } // Вызываем сразу при загрузке handleWindowResize(); </script> </body>
Высота окна: ${height}px `; // Адаптивные действия if (width < 768) { document.body.classList.add('mobile-view'); } else { document.body.classList.remove('mobile-view'); } } // Вызываем сразу при загрузке handleWindowResize(); </script> </body>
Ключевые свойства:
| Свойство | Описание |
|---|---|
window.innerWidth |
Ширина области просмотра (включая scrollbar) |
window.innerHeight |
Высота области просмотра (включая scrollbar) |
window.outerWidth |
Ширина всего окна браузера |
window.outerHeight |
Высота всего окна браузера |
Рекомендации по использованию:
- Используйте для сложной адаптивной логики, которую нельзя реализовать на CSS
- Оптимизируйте обработчик - избегайте тяжелых вычислений
- Для плавности используйте debounce/throttle
- Сочетайте с CSS media queries
- Тестируйте на реальных устройствах
Важные замечания:
- Событие срабатывает многократно при изменении размеров
- На мобильных устройствах может вести себя неожиданно
- При повороте устройства срабатывает несколько раз
- Не используйте для критически важного функционала
- Для большинства случаев лучше подходят медиазапросы CSS
Оптимизация производительности:
- Минимизируйте количество DOM-операций
- Избегайте forced reflows (чтение layout-свойств)
- Используйте requestAnimationFrame
- Для сложных вычислений - Web Workers
- Отключайте обработчик когда не нужен
Примечание: Для большинства задач адаптивного дизайна предпочтительнее использовать CSS Media Queries. JavaScript-обработчики resize стоит применять только для сложных случаев, которые невозможно реализовать средствами CSS.