【问题标题】:css animation with GSAP使用 GSAP 的 CSS 动画
【发布时间】:2015-12-28 19:24:15
【问题描述】:

如何用 GSAP 实现这个动画。这是css代码

.element {
    -webkit-animation-name: fall, opacity;
    -webkit-animation-timing-function: ease-in;
    -webkit-animation-duration: 1s;
}

@-webkit-keyframes fall {
  0% {
    -webkit-transform: translateY(0);
  }
  100% {
    -webkit-transform: translateY(21px);
  }
}

@-webkit-keyframes opacity {
  0% {
    opacity: 0;
  }

  50% {
    opacity: 1;
  }

  100% {
    opacity: 0;
  }
}

这是我试过的,但动画不是很好:

var tlm=new TimelineMax({repeat:-1, delay:delay, repeatDelay:0, yoyo: false, ease: Sine.easeIn });
tlm.from(elem, 1, {y:0, opacity:0 })
  .to(elem, 1, {y:10, opacity:1 })
  .to(elem, 1, {y:20, opacity:0 });

它以步骤为动画。这是fiddle


这是 greensocks 在其论坛上提供的solution

function drizzleFall(elem, delay){
  var tl = new TimelineMax({repeat:-1, delay:delay});
  tl.fromTo(elem, 1, {y:0}, {y:21, ease:Power1.easeIn})
    .fromTo(elem, 0.5, {opacity:0}, {opacity:1, repeat:1, yoyo:true, ease:Linear.easeNone}, 0);
}

【问题讨论】:

    标签: javascript css-animations gsap


    【解决方案1】:

    应该更容易实现,here is your resulting fiddle

    JS:

    var cloudDrizzle = document.querySelectorAll('#cloudDrizzle2 .climacon_component-stroke_drizzle');
    var duration = 1;
    var firstTimeline = createTimeline(cloudDrizzle[0], duration, 0);
    var secondTimeline = createTimeline(cloudDrizzle[1], duration, duration * 0.6);
    var secondTimeline = createTimeline(cloudDrizzle[2], duration, duration * 1.2);
    
    function createTimeline(target, duration, delay) {
      var timeline = new TimelineMax({ repeat: -1, delay: delay });
    
      timeline.fromTo(target, duration, {
        opacity: 0
      }, {
        bezier: { values: [{ opacity: 1 }, { opacity: 0 }]},
        ease: Power1.easeIn
      }, 0);
    
      timeline.to(target, duration, {
        y: 21,
        ease: Power1.easeIn
      }, 0);
    
      return timeline;
    }
    

    希望这会有所帮助。

    【讨论】:

    • @XhevantZiberi:请查看 Jack 本人(GSAP 的作者)发布的 this answer 以获得更清洁的解决方案。
    • 谢谢@Tahir 的回答,是的,Jack 给出了一个很好的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多