<div id="element"></div>
body {
  padding: 15px;
}

#element {
  width: 100px;
  height: 100px;
  background: blue;
}

.totes-at-the-end {
  position: absolute;
  top: 200px;
}

View Compiled
var el = document.getElementById('element');

// 取得起始位置
var first = el.getBoundingClientRect();

// 為元素指定一個樣式,讓元素在終止位置上
el.classList.add( 'totes-at-the-end' );

// 取得終止位置
var last = el.getBoundingClientRect();

// 反轉
var invert = first.top - last.top;

// 播放動畫
var player = el.animate([
  { transform : 'translateY(' + -invert + 'px)' },
  { transform : 'translateY(0)' }
], {
  duration: 300 ,
  easing: 'cubic-bezier(0,0,0.32,1)' ,
});

// 結束後清除動畫
player.addEventListener( 'finish' , tidyUpAnimations);

function tidyUpAnimations() {
  console.log('clean up the animation');
  el.classList.remove( 'totes-at-the-end' );
} 

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/web-animations/2.3.1/web-animations.min.js
  2. https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js