TGViewer
Будни разработчика Будни разработчика @htmlshit · 14.4K subscribers
Post #4292 679
#фишка дня

На macOS пункт меню после клика не исчезает сразу. Сначала выбранный пункт коротко моргает: подсветка пропадает, возвращается — и только потом меню закрывается.

Так система успевает показать, какой именно пункт сработал. В вебе меню обычно закрывается в момент клика, поэтому этого подтверждения нет.

На CSS сам эффект делается просто:


.menu-item:target {
animation: blink 150ms linear;
}

.menu:has(.menu-item:target) {
animation: close 150ms step-end forwards;
}


То есть выбранный пункт моргает, а меню ждёт те же 150 мс перед скрытием.

Вот даже собрал кодпен с примером: https://codepen.io/editor/alinaki/pen/01a0f12b-8d69-7192-90d7-b8b7562ef482

Без JavaScript это можно собрать через :target и :has(): выбранный пункт хранится в URL fragment. Для демки подходит отлично, для обычного компонента я бы всё-таки оставил состояние и закрытие на JS, а blink — в CSS.

Apple отдельно описывает такую обратную связь в HIG:
https://developer.apple.com/design/human-interface-guidelines/feedback

Такая-то мелочь, а насколько сильно меняется восприятие!

#css #macos #hig
  • 🔥 5
  • ❤ 4
  • 👍 1
More from @htmlshit
  1. Sep 30, 2026Котаны, вам ещё и скидка по промокоду htmlshit, налетайте!
  2. Sep 30, 2026👨‍💻 Фронтенд с AI: что можно делегировать агентам 5 октября, стартует конференция Podlod…
  3. Sep 30, 2026Если хочется немного обновить свою Telegram-ленту, собрали папку RIA — Recommended Iconic…
  4. Sep 29, 2026#инструмент дня Забайтил твиттер этим скриншотом с успехом аж на 55 тысяч просмотров. На с…
  5. Sep 29, 2026#заметка дня Позабытый формат В комментариях к свежему Subversion спор про Git и централиз…
  6. Sep 28, 2026#релиз дня Яндекс выложил в открытый доступ новую базовую модель Alice AI — AliceAI-Founda…
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 →