TGViewer
mefody.dev mefody.dev @mefody_dev · 5.38K subscribers
Post #476 3.61K
CSS-анимации как state-машины

В свежем выпуске «Веб-стандартов» обсуждали крайне интересную статью от Патрика Бросета про то, как использовать анимации для хранения истории работы со страницей.

Простая задача: если пользователь наводит мышку на элемент сейчас или наводил в прошлом, хранить это знание и использовать для каких-нибудь полезных визуализаций. На JavaScript такое делается просто. А вот если на чистом CSS?

Решение потрясающее:


.track-hover {
--was-hovered: false;
animation: track-hover .00001s linear forwards paused;
}
.track-hover:hover {
animation-play-state: running;
}
@keyframes track-hover {
to { --was-hovered: true; }
}


Если не до конца понятно, что здесь происходит, почитайте объяснение в статье. Или послушайте подкаст. Но само по себе такое решение рядом с container queries и нативными if в CSS позволяет добавить в вёрстку новый слой: не только текущее состояние страницы, но и прошлое, влияющее на настоящее.

https://patrickbrosset.com/articles/2026-03-09-using-css-animations-as-state-machines-to-remember-focus-and-hover-states-with-css-only/
Patrick Brosset Patrick - Using CSS animations as state machines to remember focus and hover states with CSS only I discovered this CSS-only trick to store the past <code>:focus</code> or <code>:hover</code> state of any element. Without JavaScript, you can style elements depending on whether they were ever focused or hovered. Here's how it works.
  • 🔥 27
  • 🤯 17
  • ❤ 3
  • 👍 2
  • 🥴 2
  • ❤‍🔥 1
More from @mefody_dev
  1. Sep 16, 2026Какие анимации более производительные: CSS или JS? Лучше пару раз увидеть, чем много откуд…
  2. Sep 14, 2026Единица измерения lh Если коротко, то 1lh = 1 line height. И это не размер шрифта, который…
  3. Sep 11, 2026<mermaid-element> Ещё одна полезная библиотека. Брамус собрал кастомный элемент, которому…
  4. Sep 10, 2026MicroLighter Дейв Руперт собрал маленькую библиотечку, которая делает подсветку кода. «Ещё…
  5. Sep 9, 2026Вам больше не нужен initial-scale Стопудово где-то у вас в вёрстке есть <meta name="viewpo…
  6. Sep 4, 2026deep tech night Чуть не забыл. Завтра же deep tech night будет. Там про ИИ и LLM, причём я…
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 →