Анимация div, скользящего от 100% ширины div по оси x

#javascript #gsap

Вопрос:

У меня есть невидимый квадрат2, расположенный слева от квадрата 1. Я использую GSAP для анимации квадрата 1, перемещающегося влево, затем после этого я хочу отдельно анимировать квадрат2, медленно выскальзывающий из квадрата 1.

У меня работает первая часть анимации, но я не могу понять, как заставить square2 выскользнуть из нее.

Я пытаюсь расположить квадрат2 на 100% ширины div справа, сделать его видимым, а затем анимировать его, перемещая влево. Это моя попытка.

Я не считаю, что настройка видимости необходима, так как GSAP должен автоматически делать ее видимой, но я включил ее на случай, если кто-то подумал, что проблема в настройках видимости.

Кодовое обозначение: https://codepen.io/SquanchyHappy/pen/rNmKJdJ

 <div id="container">
  <div id="square1"></div>
<div id="square2"></div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.7.1/gsap.min.js"></script>
 
 body {
  background-color: black;
}

#container {
  position: absolute;
  right: 0%;
  width: 200px;
}

#square1 {
  visibility: hidden;
  background-color: grey;
height: 100px;
  width: 100px;
  float: left;
}

#square2 {
  background-color: blue;
  height: 100px;
  width: 100px;
  float: right;
}
 
 gsap.registerPlugin("MotionPathPlugin");

slideAnimation();

function slideAnimation() {
  let tl = gsap.timeline({ delay: 1 });
  tl.set(square2, { xPercent: 50, transformOrigin: "0% 50%" });
  tl.from(
    square2,
    { x: screen.width, ease: "none", duration: 0.5 },
    0
  );
  tl.from(
    square2,
    {
      y: square2.getBoundingClientRect().top - 300,
      ease: "none",
      duration: 0.5
    },
    0
  );
  tl.to(square2, {
    xPercent: 0,
    duration: 0.5,
    ease: "power2",
    clearProps: "transform"
  });
  //Below is the part I can't figure out
  //square2.style.visibility = 'visible'
  //tl.set(square2, {xPercent: 100})
  //tl.from(square2, {duration: 3})
}
 

Комментарии:

1. Привет — вы, скорее всего, получите помощь на форумах GSAP. вы можете использовать xPercent или yPercent для перемещения элементов в процентах от их собственной ширины или высоты. Я бы посоветовал использовать autoAlpha вместо style.visibility (вы также нигде не определяете параметр square2).