Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>View timeline animation</title>
</head>
<body>
  <h1>View timeline invalidation test</h1>
  <div class="subject">
    <div id="animated"></div>
  </div>
  <button class="shift">Shift</button>
  <button class="grow">Grow</button>
</body>
</html>
 
body {
  height: 200vh;
}
.subject {
  position: absolute;
  left: 0;
  width: 100px;
  height: 100px;
  background: green;
  top: 400px;
  
  view-timeline: subject;
}
.shifted {
  top: 120vh;
}
.grown {
  height: 300px;
}
@keyframes slide {
  entry 0% {transform: translateY(100vh);}
  exit 0% {transform: translateY(0);}
}
#animated {
  position: fixed;
  top: 0;
  left: 100px;
  width: 100px;
  height: 100px;
  background: blue;
  animation: slide linear;
  animation-duration: auto;
  animation-timeline: subject;
}
 
document.querySelector('.shift').addEventListener('click', () => {
  document.querySelector('.subject').classList.toggle('shifted');
});
document.querySelector('.grow').addEventListener('click', () => {
  document.querySelector('.subject').classList.toggle('grown');
});
Output 300px

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
flackrpro
0viewers