@Genri_Rus

Как правильно сделать offset при скроллинге?

Добрый день!

Не могу понять, как сделать offset в зависимости от скроллинга ?

В моем примере картинка летит к элементу, у которого position: fixed
Однако при прокрутке колесиком мышки, offset запоминает только начальные координаты положения у иконки

А как сделать, чтобы offset запоминал не только начальные координаты положения, но и подстраивался под скролл колесиком ?

Вот пример:

<div>
  <p class="img"><img src="http://lorempixel.com/30/30/city">
  <button class="move">Переместить</button>
  </p>
</div>

<div>
  <p class="img"><img src="http://lorempixel.com/30/30/technics">
  <button class="move">Переместить</button>
  </p>
</div>

<div class="icon-right"><i class="fa fa-tags" aria-hidden="true"></i></div>

const icon = $('.icon-right');

$('.move').click(function() {
    let img = $(this).parent().find('img');
    let offset = img.offset();
    $('body').append('<div class="moved-item"></div>');
    var copy = img.clone();
  
    let copyItem = copy.appendTo('.moved-item');
  
   $('.moved-item').css({'top' : offset.top + 'px', 'left' : offset.left + 'px'}).fadeIn("slow").animate({'top': icon.offset().top, 'left': icon.offset().left + 20}, 1200, 
    function(){ $(this).remove(); }
  );
})


Более наглядный пример: https://codepen.io/Genri_Rus/pen/JqEgyg
  • Вопрос задан
  • 232 просмотра
Решения вопроса 1
@tin_vsl
Senior Developer
сделать moved-item тоже через position: fixed

имею ввиду изменить стиль moved-item и использование анимации в скрипте
например, сделать такую анимацию
$('.moved-item').css({'top' : offset.top-window.scrollY + 'px', 'left' : offset.left + 'px'}).fadeIn("slow").animate({'top': icon.offset().top-window.scrollY, 'left': icon.offset().left + 20}, 1200, 
    function(){ $(this).remove(); }
  );
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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