Анимация волны в зависимости от курсора как?

Ребят, всем привет. Уже пару недель мучаюсь над линией. Нужно сделать анимацию при наведении как на сайте https://www.sibirix.ru/ . У меня получилось сделать саму анимацию волны. Но у меня не получается прикрепить её к курсору как на примере. Вот мой код https://jsfiddle.net/alexey10mentor/4kx8aqf7/1/ . Кто сможет помочь, буду благодарен, или возможно совет. Всем спасибо за помощь))
P.S. Украсть код с самого сайта не реально, там ногу сломать можно))
  • Вопрос задан
  • 1312 просмотров
Решения вопроса 2
@asd111
Криво, но работает почти как должно.
$('.js-line-wave').on('mouseenter, mousemove', function(e) {
    // Здесь расчитывается относитеьное положение курсора чтобы от него считать синус
    var offset = $(this).offset();
    var relativeX = (e.pageX - offset.left);
    var relativeY = (e.pageY - offset.top);

    $('.line, .button_wave, .line_item').each(function(index, letter) {        
        var posx = index; 
      
        // Здесь нужно править магические числа, например вместо 352 надо ставить ширину элемента
        //и ещё нужно править частоту волны и амплитуду, но я забыл формулы
      
        var posy = Math.sin((index / 10 + relativeX / 352) * 180 / Math.PI) * 30 - 20;
      
        // Здесь происходит применение синуса только к 30 элементам слева и справа от мышки
      
        if ($(letter).position().left > relativeX - 30 && $(letter).position().left < relativeX + 30) {
            $(letter).css("transform", "translateY(" + posy + "px)");
        } else {
            $(letter).css("transform", "translateY(" + 0 + "px)");
        }
    });


});
Ответ написан
profesor08
@profesor08 Куратор тега JavaScript
Задай своему .js-line-wave высоту побольше, чтоб в него вмещалась вся кривая, например height: 300px;

Еще можно для плавности добавить transition: ease transform 100ms; для двигающихся элементов.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы