← Назад в «Блог»
33
Обновлено: 12 мая 2025

Добавляем плавный след за курсором на сайт

На одном из сайтов наткнулся на залипательный эффект — линия, которая идет за курсором. Я просто изучал сайт и на минуту залип на этом эффекте, рисуя что-то.

Ниже скрипт и инструкция, как подключить такое себе.

Демо

Шаг 1: Подключение к странице

Есть два способа добавить эффект на ваш сайт:

Способ 1: Подключение отдельного файла

  1. Скопируйте код и создайте файл cursor-trail.js в папке вашего проекта (например, в js/).
  2. Добавьте его в ваш HTML-файл перед закрывающим тегом </body>:
<body>
    <!-- Ваш контент -->
    <script src="js/cursor-trail.js"></script>
</body>

Способ 2: Встраивание кода в HTML

Если вы не хотите использовать отдельный файл, можно встроить код прямо в HTML, указан полный код:

<body>
    <!-- Ваш контент -->
    <script>
    document.addEventListener("DOMContentLoaded",()=>{
        // Настройки эффекта - удобно редактировать
        const trailSettings = {
            color: "rgba(255, 255, 255, 0.85)",  // Цвет линии
            thickness: 1,                        // Толщина линии
            maxSegments: 40,                     // Максимальное количество сегментов
            minDistance: 3,                      // Минимальное расстояние между точками
            fadeFactor: .95,                     // Фактор затухания
            inactivityTimeout: 5000              // Время бездействия до исчезновения (мс)
        };
        
        // Минифицированный код (не редактировать)
        let s=[],x=null,y=null,f=!0,t=null;function h(){s.length>0&&(s.forEach((e,i)=>{setTimeout(()=>{e.style.opacity="0"},50*i)}),setTimeout(()=>{s.forEach(e=>e.remove()),s.length=0},50*s.length+300))}function r(){t&&clearTimeout(t),t=setTimeout(h,trailSettings.inactivityTimeout)}function c(e,i,n,o){const a=document.createElement("div");a.classList.add("trail-segment");const l=Math.sqrt(Math.pow(n-e,2)+Math.pow(o-i,2)),d=180*Math.atan2(o-i,n-e)/Math.PI;if(a.style.width=`${l}px`,a.style.height=`${trailSettings.thickness}px`,a.style.left=`${e}px`,a.style.top=`${i}px`,a.style.transform=`rotate(${d}deg)`,a.style.transformOrigin="0 0",a.style.backgroundColor=trailSettings.color,a.style.position="fixed",a.style.pointerEvents="none",a.style.zIndex="9998",a.style.borderRadius="0px",a.style.opacity="1",a.style.transition="opacity 0.3s",document.body.appendChild(a),s.push(a),s.length>trailSettings.maxSegments){const e=s.shift();e.style.opacity="0",setTimeout(()=>{e.remove()},300)}s.forEach((e,t)=>{e.style.opacity=(t+1)/s.length})}document.addEventListener("mousemove",e=>{if(r(),f)return x=e.clientX,y=e.clientY,void(f=!1);if(null===x||null===y)return x=e.clientX,void(y=e.clientY);const t=e.clientX-x,i=e.clientY-y,n=Math.sqrt(t*t+i*i);n>trailSettings.minDistance&&(c(x,y,e.clientX,e.clientY),x=e.clientX,y=e.clientY)}),r()});
    </script>
</body>

Шаг 2: Настройка эффекта

Откройте cursor-trail.js (или найдите встроенный код в HTML) и найдите найстройки скрипта:

const trailSettings = {
    color: "rgba(255, 255, 255, 0.85)",  // Цвет линии
    thickness: 1,                        // Толщина линии
    maxSegments: 40,                     // Максимальное количество сегментов
    minDistance: 3,                      // Минимальное расстояние между точками
    fadeFactor: .95,                     // Фактор затухания
    inactivityTimeout: 5000              // Время бездействия до исчезновения (мс)
};

Что означают параметры:

  • color: Цвет линии в формате CSS (HEX, RGB, RGBA).
  • thickness: Толщина линии в пикселях.
  • maxSegments: Сколько сегментов может быть в линии (влияет на длину следа).
  • minDistance: На каком расстоянии добавляется новый сегмент (меньше — плавнее, больше — проще для браузера).
  • fadeFactor: Фактор затухания для плавного исчезновения (чем ближе к 1, тем медленнее затухание).
  • inactivityTimeout: Время в миллисекундах, после которого след исчезнет, если курсор не двигается (5000 = 5 секунд).

Как настроить под себя:

  • Для тонкой и короткой линии: уменьшите thickness до 0.5 и maxSegments до 20−30.
  • Для длинного хвоста: увеличьте maxSegments до 100−150.
  • Для более заметного следа: используйте яркий цвет, например «#00ff00» (зеленый) или «rgba (0, 128, 255, 0.9)» (голубой).
  • Для более быстрого затухания при бездействии: уменьшите inactivityTimeout до 3000 (3 секунды).
  • Если сайт тормозит: увеличьте minDistance и уменьшите maxSegments.

Особенности эффекта

Наш эффект следа за курсором имеет несколько важных особенностей:

  1. Плавное затухание с конца: Старые сегменты постепенно исчезают, создавая эффект «хвоста».
  2. Автоматическое исчезновение: Если курсор не двигается 5 секунд, след плавно исчезает.
  3. Адаптивность: Сегменты динамически создаются в зависимости от скорости и траектории движения курсора.
  4. Оптимизация: Используется оптимальное количество элементов для плавного эффекта без перегрузки браузера.
  5. Простая настройка: Все параметры эффекта легко настраиваются через один объект с настройками.

Итог

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

Если есть вопросы, пишите в комментариях!

Полезно
1
Непонятно
Поделиться
Отправить
Линкануть
Вотсапнуть

Канал Дани в телеграме

В канале показываю, как разрабатываю продукты: нейронки, боты, пет-проекты, бизнес. Делюсь фишками о разработке и дизайне. Без рекламы.

Подписаться
← Назад в «Блог»

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Контакты