Современный веб развивается стремительно, и разработчики постоянно ищут способы улучшить взаимодействие пользователей с элементами интерфейса, сделать их более интуитивными и удобными. Среди привычных компонентов — всплывающие подсказки, меню и карты, которые часто появляются при наведении мыши или долгом нажатии на тачскринах. В последние годы появились попытки упростить создание таких элементов, сделав их декларативными и максимально нативными для браузера. Одной из таких новинок стал Interest Invoker API — экспериментальный интерфейс, впервые появившийся в Chrome 139. В чем суть этой технологии и почему она может изменить способы реализации hover-интерактивности на сайтах? Рассмотрим подробнее.
Interest Invoker API представляет собой механизм, позволяющий создавать интерактивные элементы, реагирующие на «интерес» пользователя — чаще всего проявляемый через наведение мыши или долгий тап. Особенность в том, что для создания таких элементов достаточно использовать HTML, без необходимости писать JavaScript-код для обработки событий mouseenter и mouseleave. Это значительно упрощает разработку и делает поведение компонентов более предсказуемым и стабильным. Основная идея — наличие триггера интереса (interest trigger), который является элементом, на который пользователь наводит курсор или удерживает прикосновение. Этот триггер связан через атрибут interestfor с целевым объектом — interest target, который раскрывается, показывая дополнительный контент — подсказку, меню, карточку и т.
д. Триггером может быть ссылка, кнопка или область изображения (image map area). Например, достаточно добавить ссылке атрибут interestfor с указанием id всплывающего блока, который необходимо показать при наведении. Браузер автоматически позаботится о появлении и скрытии такого блока, управляя всеми событиями взаимодействия. Это решение имеет несколько важных преимуществ перед традиционными способами.
Во-первых, оно избавляет от необходимости писать громоздкий JavaScript, снижая сложность разработки. Во-вторых, Interest Invoker API изначально учитывает вопросы доступности — браузеры добавляют необходимые ARIA-атрибуты и обеспечивают нужные семантические подсказки, что особенно актуально для пользователей клавиатур и экранных читалок. В-третьих, благодаря встроенным задержкам показа и скрытия всплывающих элементов достигается более комфортный пользовательский опыт, предотвращающий случайные срабатывания при неудачном наведении или уходе курсора. Как работает задержка? Между наведение курсора на триггер и появлением цели интереса проходит небольшой интервал времени (по умолчанию около полусекунды). Такой подход помогает избежать множества случайных активаций, особенно при высокочастотном перемещении мыши.
Аналогично работает задержка скрытия — если курсор ненадолго покидает область триггера или цели, содержимое не исчезает мгновенно, оставляя пользователю время вернуться назад, что особенно важно для небольших по размеру всплывающих элементов. Реализация в CSS поддерживает новые свойства interest-show-delay и interest-hide-delay. Их можно настраивать для различных сценариев. Например, если всплывающая подсказка не мешает работе и не закрывает важный контент, значения задержки показа можно убрать, сделав интерфейс более отзывчивым. Для пользователей клавиатур задержка скрытия также рекомендуется для комфортной навигации, но может быть снята при фокусировке, чтобы не создавать дополнительных препятствий.
Любопытной особенностью является интеграция с новыми CSS-псевдоклассами, которые позволяют стилизовать элементы в зависимости от состояния интереса пользователя. Появились селекторы типа :has-interest и :has-partial-interest, обозначающие мышиный и клавиатурный интерес соответственно. Аналогично появляются :target-of-interest и :target-of-partial-interest для целевых элементов. Это дает дизайнерам расширенные возможности для динамического изменения стилей и предоставления подсказок по активации через клавиатуру, включая сообщения с инструкциями, например, "Нажмите ⌥↑ чтобы активировать". Реализована и концепция "частичного интереса".
При навигации клавиатурой по триггеру, если целевой элемент содержит сосредотачиваемые компоненты, они изначально блокируются для фокуса. Для их активации пользователь должен применить определенное сочетание клавиш, ориентированное на экранные читалки. Это предотвращает случайные взаимодействия и облегчает работу с вложенными элементами. Однако Interest Invoker API находится на экспериментальной стадии, и некоторые аспекты требуют дополнительной доработки и обсуждения. Например, в текущей реализации целевой элемент всегда скрывается при уходе курсора независимо от вида используемого popover.
Это вызывает вопросы, особенно для popover с режимом manual, который предположительно должен оставаться открытым до явного закрытия. Также возникают дискуссии о целесообразности использования popover в качестве основы, так как от этого зависит поведение и доступность компонентов. Еще один момент — взаимодействие с сенсорными устройствами, где наведение не всегда возможно, и пока предлагается решение с длинным нажатием и выбором опции "Просмотреть информацию", но механизм пока не идеален. Несмотря на это, Interest Invoker API открывает перспективы для упрощения верстки и создания интерактивных компонентов без языков программирования. В вебе сейчас наблюдается тенденция к росту декларативных решений, которые обеспечивают гибкость и одновременно снижают порог входа для новичков и позволят создавать более надежный и удобный интерфейс.
Для практикующих веб-разработчиков и дизайнеров пора присмотреться к этой технологии. Возможность использовать обычные HTML-элементы с новым атрибутом interestfor и соответствующим popover с нативной поддержкой в браузере — это революционный подход. Он сохраняет совместимость и расширяемость, в то же время уменьшая зависимость от скриптов и повышая производительность страницы. Стоит отметить, что эксперименты с Interest Invoker API пока доступны в Chrome Canary и версии 139, что значит, что предстоит пусть к стандартизации и широкому принятию. Рекомендуется отслеживать обновления спецификации и участвовать в обсуждениях сообщества, чтобы вовремя адаптировать проекты и использовать преимущества API.
В перспективе Interest Invoker API позволит создавать разнообразные UI-компоненты, такие как информационные карточки, контекстные меню, аккордеоны и даже сложные панели управления, управляемые исключительно с помощью HTML и CSS. Это снижает количество кода и делает интерфейсы более интуитивными и устойчивыми к ошибкам. Подводя итог, Interest Invoker API — это новый шаг в эволюции веб-разработки, который ставит своей целью упростить создание hover-триггеров с помощью декларативного синтаксиса и встроенной поддержки важных UX-аспектов, включая доступность и удобство. Несмотря на существующие пока технические и концептуальные вопросы, он обещает стать мощным инструментом для создания современных и удобных интерфейсов, способствуя развитию более естественного и предсказуемого взаимодействия пользователей с веб-страницами.