TGViewer
ТОП - Тёма о программировани ТОП - Тёма о программировани @temaprog · 2.81K subscribers
Post #11 1.18K
Грядут перемены
#Фронтенд

Сложно представить современный веб интерфейс без анимаций. И я сейчас не говорю о свистелках-перделках, а я о самых простых, заскейлить, прозрачность добавить, цвет поменять и тд. Но почему-то некоторые анимации работают плавно, а некоторые нет. Хм… очень странно, ведь для анимации изменений всех этих свойств мы используем один инструмент - transition.

Секрет заключается в том, что анимация разных свойств имеет разную производительность, разное количество слоев затрагивается. Анимировать opacity или анимировать height, совсем разные вещи.

Как решать эту проблему? Использовать transform. Да в некоторых ситуациях это поможет, но transform покроет не все кейсы.

Решение есть - will-change. Используя его вы сообщаете браузеру о том, что свойство будет меняться. Браузер подготовится заранее и ваша анимация будет гладкой.

Но!
Нельзя навешивать will-change на все без разбора, тк слишком обильное использование может ухудшить производительность.

Как тогда быть? Где мера?

Есть один лайфхак- вешать это свойство динамически. Но! Если вы повесите его при наведении на элемент, на котором при наведении нужна анимация эффекта не будет. А вот если повесить его на элемент тогда, когда вы заходите мышкой в блок, в котором этот элемент расположен, то будет лучше. Важно, контейнер не должен 1 в 1 повторять размеры элемента, иначе нет смысла, в этом случае стоит найти блок побольше. Таким образом браузер будет готовиться к изменению свойства только тогда, когда пользователь будет близок к этому элементу, а не находится совсем в другой части страницы.

Такой подход позволит не просадить ваш интерфейс, все будет работать плавно.
  • 👍 12
  • 🔥 8
More from @temaprog
  1. Sep 15, 2026Здарова, работяги! Кто собирается на Avito.Tech.Conf 26 сентября? Я уже рассказывал про ко…
  2. Sep 14, 2026Зачем ты пишешь? Здарова, работяги! Помню, как все только начинали активно использовать аг…
  3. Sep 4, 2026Здарова, работяги! Приезжает коробка. Внутри бейдж на Avito.Tech.Conf и часы «Ракета».😳 И…
  4. Sep 3, 2026Здарова, работяги! Потихоньку продолжаю дописывать посты из заметок. В прошлый раз — элеме…
  5. Aug 26, 2026Здарова, работяги! Совсем скоро осень, а значит, начинается сезон конференций. Про Avito.T…
  6. Aug 18, 2026Здарова, работяги! Сейчас я много думаю про AI-native команды и внедрение ИИ в разработку.…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →