Перейти к содержимому
Новость

На GitHub появилась Hairline: анимации реагируют на курсор без тяжелых библиотек

Разработчик Лукас Маркес опубликовал на GitHub проект Hairline, позволяющий добавлять на сайты интерактивные изометрические изображения. Они реагируют на движение курсора, поддерживают React и обычный JavaScript. При этом для работы самой библиотеки не требуется устанавливать дополнительные зависимости.

Александр Фомин
На GitHub появилась Hairline: анимации реагируют на курсор без тяжелых библиотек

Автор: lucasmarkes

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

Первоначальное описание проекта упоминало шесть изображений, однако библиотека быстро расширилась. На момент проверки репозитория разработчика в документации перечислены уже 33 изометрические фигуры. Среди них есть ноутбук, клавиатура, серверный шкаф, маршрутизатор, терминал и другие объекты.

Для разработчиков предусмотрено два варианта подключения. В проектах на React изображения используются как готовые компоненты. На других сайтах их можно создавать через функции JavaScript, передавая нужный HTML-элемент.

Библиотека распространяется в формате ESM. React версии 18 или новее требуется только при использовании соответствующих компонентов. Также предусмотрена установка через shadcn.

02_800x450_bcc09e7794

Фото: lucasmarkes

Отдельное внимание автор уделил производительности. Все изображения на странице используют общий цикл анимации `requestAnimationFrame`. Когда изображение находится за пределами экрана или не движется, вычисления для него прекращаются. Если активных анимаций нет, останавливается и сам цикл.

Для настройки предусмотрены параметры интенсивности движения и оформления. Цвета линий, толщину штрихов и фон можно изменять через CSS-переменные. На демонстрационном сайте доступен ползунок, позволяющий посмотреть, как изображения реагируют на изменение интенсивности.

Есть и ограничения. Библиотеке нужен DOM, поэтому при серверном рендеринге сначала создается пустой контейнер с соотношением сторон 5:4. Сама графика появляется после выполнения клиентского кода.

Проект распространяется по лицензии MIT. Его можно использовать в собственных веб-приложениях, а исходный код открыт для изучения и изменения.

Как считаете, подобная анимация действительно делает интерфейс удобнее или чаще отвлекает от содержимого страницы?

Источник: GitHub