Дебаунс событий для плавного интерфейса!
Частые события
Проблемный код:
Проблема: при быстром
Улучшенный дебаунсер:
Применяем с
🔥 В следующей части рассмотрим почему для scroll дебаунс не работает и как throttle решает эту проблему для плавных анимаций!
📣 Code Ready | #практика
Частые события
resize
или input
могут перегружать страницу и тормозить анимации. Решение — дебаунс с правильными опциями.Проблемный код:
window.addEventListener('resize', () => {
console.log('Width:', window.innerWidth);
updateLayout();
});
Проблема: при быстром
resize
— десятки вызовов в секунду.Улучшенный дебаунсер:
function debounce(fn, delay = 200) {
let timer;
return (...args) => {
clearTimeout(timer);
timer = setTimeout(() => fn(...args), delay);
};
}
Применяем с
cleanup
:const debouncedResize = debounce(() => {
console.log('Debounced width:', window.innerWidth);
}, 300);
window.addEventListener('resize', debouncedResize);
🔥 В следующей части рассмотрим почему для scroll дебаунс не работает и как throttle решает эту проблему для плавных анимаций!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍9🔥8
Привет! В этом гайде создаём упрощенную интерактивную панель эмодзи-реакций с счетчиками, как в социальных сетях.
Ключевые моменты:
• HTML: простая структура с эмодзи-кнопками и счетчиками.
• CSS: минимальные стили с hover-эффектами и переходами.
• JS: базовая логика кликов и подсчета реакций без сложных анимаций.
Подходит для социальных платформ, интерактивных интерфейсов, блогов и UI с пользовательскими реакциями.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥10❤6
This media is not supported in your browser
VIEW IN TELEGRAM
Интерактивные курсы по HTML, CSS, JavaScript и React, от простых тренажёров до профессиональных программ. Отлично подходит для новичков и тех, кто хочет прокачать свои навыки.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍9❤8👎1
В этой шпаргалке собраны основные приёмы для создания генераторов, возврата значений, перебора, делегирования и управления выполнением. Они применяются при работе с ленивыми коллекциями, потоками данных и сложными итерациями в приложениях.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥11❤5🤝4
🔥16❤9👍9🤝7😁2
This media is not supported in your browser
VIEW IN TELEGRAM
Псевдокласс
:active
позволяет задать стили для элемента, с которым происходит взаимодействие прямо сейчас.Покажу примеры:
• color — меняет цвет текста;
• background — подсвечивает фон;
• transform — делает анимацию «прожатия»;
• box-shadow — добавляет эффект клика.
Фишка в том, что
:active
работает только во время удержания. Отпустил - элемент возвращается к обычному стилю.Please open Telegram to view this post
VIEW IN TELEGRAM
❤18👍8🔥8
This media is not supported in your browser
VIEW IN TELEGRAM
Metanit — это подробный русскоязычный учебник по JavaScript с объяснениями и примерами. Подходит как для новичков, так и для тех, кто хочет углубиться в тонкости языка.
📌 Оставляю ссылочку: metanit.com
📣 Code Ready | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥8❤5😁3👎2
Throttle vs Debounce: выбираем инструмент!
Функция срабатывает только после остановки прокрутки на 300ms. Пользователь видит скачкообразные обновления интерфейса:
Решение — throttle:
Функция выполняется максимум раз в 16ms, обеспечивая плавные 60 FPS без перегрузки браузера.
🔥 Поэтому,
📣 Code Ready | #практика
Функция срабатывает только после остановки прокрутки на 300ms. Пользователь видит скачкообразные обновления интерфейса:
const debouncedScroll = debounce(() => {
console.log('Scroll handled');
}, 300);
window.addEventListener('scroll', debouncedScroll);
Решение — throttle:
function throttle(fn, limit = 16) {
let inThrottle;
return (...args) => {
if (!inThrottle) {
fn(...args);
inThrottle = true;
setTimeout(() => inThrottle = false, limit);
}
};
}
Функция выполняется максимум раз в 16ms, обеспечивая плавные 60 FPS без перегрузки браузера.
const throttledScroll = throttle(() => {
console.log('Scroll handled');
}, 16); // 16ms = 60 FPS
window.addEventListener('scroll', throttledScroll, { passive: true });
🔥 Поэтому,
Throttle
— для частых действий (scroll, resize). Debounce
— для финального результата (поиск, валидация).Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤7🔥7🤝3
В этом гайде создаём кнопку, которая превращается в индикатор загрузки при нажатии, делая интерфейс интерактивным и отзывчивым.
Ключевые моменты:
• HTML: простая структура кнопки с текстом и элементом лоадера.
• CSS: плавные переходы, позиционирование лоадера и анимация вращения.
• JS: добавление/удаление класса loading и блокировка кнопки на время «загрузки».
Подходит для форм, отправки данных, интерактивных интерфейсов и UX-дизайна.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤8🤝7🔥3