TGViewer
mefody.dev mefody.dev @mefody_dev · 5.38K subscribers
Post #485 3.16K
Анимированный фокус на View Transitions

Думаю, вы видели такой паттерн, когда кольцо фокуса (обводка, которая рисуется вокруг сфокусированных элементов интерфейса) перемещается по странице плавно, с анимацией. Не резко перескакивает, как это делает браузер, а аккуратно перетекает. Для такого часто используются JS-библиотеки, которые играют в «угадай координату» и двигают по сути абсолютно спозиционированный элемент по странице.

Крис Койер пробует сделать версию попроще. Пускай во время перехода фокуса включается View Transition: включаем новое кольцо на новом элементе, старое выключаем, запускаем анимацию. Звучит интересно, и кода требует прям мало.

К сожалению, сделать хорошо не получилось:
• Во-первых, в единственном более-менее рабочем решении пришлось расставить дочерний span в каждом интерактивном элементе. А хотелось бы вёрстку не править.
• Во-вторых, управление фокусом идёт на уровне JS, а это уже риски что-то не учесть (браузер умеет это лучше, не пытайтесь его имитировать).
• В-третьих, если текст ссылки содержит перенос (то есть находится на двух строках сразу), то визуально всё неприлично разломано.

В комментариях к статье приложили демку с решением на Anchor Positioning. Там проблемы похожие, хотя лишний span уже не нужен, и это радует.

В общем, присмотреться к способу двигать что-то анимированно по странице новыми апишками точно стоит. А вот применять такое к фокусу — лучше не надо, рендеринг текста сложнее, чем просто коробочка с буквами. К сожалению, тут я скорее за то, чтобы использовать JS-библиотеки, проверенные временем.

https://frontendmasters.com/blog/animating-focus-with-view-transitions/
master.dev Animating Focus with View Transitions Let's try a fresh take on animating focus rings around a page. Flying focus, as it were. Only instead of measuring where elements are ourselves, we'll let View Transitions figure it out.
  • 👍 7
  • 🥴 4
  • 💔 4
  • ❤ 3
  • 🤨 2
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 →