SuperScrollOrama and TweenMax fade in and out scrolling

2.3k Views Asked by At

I have a series of colored DIVs that I'm trying to fade in and out when you scroll down the page.

My setup for the div's is simple:

<div class="wrapper">
        <div id="content" class="clearfix">
            <div class="box alpha"></div>
            <div class="box beta"></div>
            <div class="box gamma last"></div>
            <div class="box delta"></div>
            <div class="box epsilon"></div>
            <div class="box zeta last"></div>
        </div>
    </div>

Here is my superscrollorama/tweenmax script:

var controller = $.superscrollorama();
controller.addTween('.box.alpha', TweenMax.from( $('.box.alpha'), 1, {css:{opacity: 1} ,ease:Quad.easeInOut}), 400);
controller.addTween('.box.alpha', TweenMax.to( $('.box.alpha'), 1, {css:{opacity: .2}}), 1600);
controller.addTween('.box.beta', TweenMax.from( $('.box.beta'), 1, {css:{opacity: .2}}), 1600);
controller.addTween('.box.beta', TweenMax.to( $('.box.beta'), 1, {css:{opacity: 1} ,ease:Quad.easeInOut}), 2400);
controller.addTween('.box.gamma', TweenMax.from( $('.box.gamma'), 1, {css:{opacity: .2}}), 2400);
controller.addTween('.box.gamma', TweenMax.to( $('.box.gamma'), 1, {css:{opacity: 1} ,ease:Quad.easeInOut}), 3200);
controller.addTween('.box.delta', TweenMax.from( $('.box.delta'), 1, {css:{opacity: .2}}), 3200);
controller.addTween('.box.delta', TweenMax.to( $('.box.delta'), 1, {css:{opacity: 1} ,ease:Quad.easeInOut}), 4000);
controller.addTween('.box.epsilon', TweenMax.from( $('.box.epsilon'), 1, {css:{opacity: .2}}), 4000);
controller.addTween('.box.epsilon', TweenMax.to( $('.box.epsilon'), 1, {css:{opacity: 1} ,ease:Quad.easeInOut}), 4800);
controller.addTween('.box.zeta', TweenMax.from( $('.box.zeta'), 1, {css:{opacity: .2}}), 4800);
controller.addTween('.box.zeta', TweenMax.to( $('.box.zeta'), 1, {css:{opacity: 1} ,ease:Quad.easeInOut}), 5600);

Everything fades in as you scroll down the page, but I want a box to fade out while the next box is fading in, I'm probably doing this wrong but I can't find a whole lot of documentation.

Here's what I'm doing: http://emptywalrus.com/scroll/

1

There are 1 best solutions below

0
On

You need to create a Timeline. Here's a sample of the same thing I just did in one of my projects:

controller.addTween(
    '#the-problem',
    (new TimelineLite())
        .append([
            TweenMax.fromTo($('#the-problem .animation-heading'), 1,
                { delay: 0.3, css: { right: -1500 }, ease: Expo.easeInOut },
                { delay: 0.3, css: { right: 0 }, ease: Expo.easeInOut }),
            TweenMax.fromTo($('#the-problem .animation-text'), 1,
                { delay: 0.1, css: { right: -1500 }, ease: Expo.easeInOut },
                { delay: 0.1, css: { right: 0 }, ease: Expo.easeInOut }),
            TweenMax.fromTo($('#the-problem .animation-image'), 1,
                { delay: 0.1, css: { left: -1500 }, ease: Expo.easeInOut },
                { delay: 0.1, css: { left: 0 }, ease: Expo.easeInOut })
        ]), 700, -400);

controller.addTween(
    '#the-solution',
    (new TimelineLite())
        .append([
            TweenMax.fromTo($('#the-solution .animation-heading'), 1,
                { delay: 0.3, css: { left: -1500 }, ease: Expo.easeInOut },
                { delay: 0.3, css: { left: 0 }, ease: Expo.easeInOut }),
            TweenMax.fromTo($('#the-solution .animation-text'), 1,
                { delay: 0.1, css: { left: -1500 }, ease: Expo.easeInOut },
                { delay: 0.1, css: { left: 0 }, ease: Expo.easeInOut }),
            TweenMax.fromTo($('#the-solution .animation-image'), 1,
                { delay: 0.1, css: { right: -1500 }, ease: Expo.easeInOut },
                { delay: 0.1, css: { right: 0 }, ease: Expo.easeInOut })
        ]), 700, -400);