Анимация и движение к заданной точке при нажатии на кнопку

406
21 февраля 2017, 19:06

Вопрос носит больше теоретический характер, наверное. Суть в чём: на сайте lostfilm обновили дизайн и сделали помимо всего остального то, что привлекло моё внимание, заинтересовало - а как же это устроено, как реализовали?

Если Вы зарегистрированы на сайте, то можете отмечать прогресс просмотра серий сериалов. При нажатии на кнопку в виде глаза "просмотрено" снимок этой кнопки летит по прямой траектории с размытием и уменьшением к кнопке (которая открывает текущий раздел сайте) с таким же глазом (скриншот смотри ниже). Т.е. пользователю стразу дают понять откуда растут ноги и т.п.

Мне это показалось очень интересным и полезным. У кого какие идеи, как это реализовали и сделали?

Answer 1

Вам понадобится:

  1. .clone(), чтобы сделать копию объекта
  2. .animate(), чтобы анимировать ее
  3. .offset(), чтобы узнать координаты объектов относительно body
  4. .css(), чтобы задать первоначальное положение объекта копии

$('.source').click(function() { 
//создаем копию объекта: 
  var clone = $(this).clone().appendTo("body"); 
   
  //задаем первоначальную позицию: 
  clone.css({  
    top: $(this).offset().top, 
    left: $(this).offset().left, 
    position: 'absolute' 
  }) 
   
  //анимируем к позиции цели: 
  clone.animate({ 
    top: $('.target').offset().top, 
    left: $('.target').offset().left, 
    opacity: 0 //с уменьшением прозрачности 
  }, 
  //по завершении анимации удаляем элемент: 
  function() { 
    $(this).remove() 
  }) 
 
})
.source { 
  border: 1px solid #ccc; 
  position: absolute; 
  top: 200px; 
  left: 10px; 
} 
 
.target { 
  background: #ccc; 
  position: absolute; 
  top: 20px; 
  right: 10px; 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="source">source</div> 
<div class="target">target</div>

READ ALSO
Woocommerce. Количество товара в корзине и общая цена. Проблема с обновлением

Woocommerce. Количество товара в корзине и общая цена. Проблема с обновлением

ПриветствуюВозникла проблема с корзиной вукомерса, количество товара в полях ввода обновляется, но не сохраняется, из чего следует другая...

840
Как работает [ScriptIgnore]?

Как работает [ScriptIgnore]?

При разработке небольшого приложения на ASPNET MVC, столкнулся с такой проблемой, что когда мой контрол возвращал данные в формате JSON, то возникала...

294
Смена фона body при смене слайдов

Смена фона body при смене слайдов

Привет! Есть слайдер-карусель, сделанный при помощи плагина slickПотребовалось подкрутить его, чтобы при смене слайда автоматически менялся...

412
Stylus|CSS каждое слово выше на ХХpx

Stylus|CSS каждое слово выше на ХХpx

Есть предложение в теге span или div

436