.scroll-body
  .wrap#my-sticky-element
    .box
      p.split1 Art
      p Inspired
      p.split2 Engineering
    .box.hidden
      p.shadow2 Engineering
      p Inspired
      p.shadow1 Art
View Compiled
html, body {
  height: 100%;
  font-family: sans-serif;
  font-weight: 700;
  letter-spacing: 2px;
}

body {
  overflow-x: hidden;
}

.scroll-body {
  height: 400vh;
  
  .wrap {
    top: calc(50vh - 10px);
  }
}

.box {
  top: 0;
  left: 0;
  max-width: 70vw;
  position: absolute;
  font-size: 50px;
  line-height: 60px;
  perspective: 400px;
  .split {
    z-index: 10;
  }
  
  .shadow {
    z-index: -1;
  }
  
  &.hidden {
    opacity: 0;
    z-index: -1;
  }
}

.wrap {
  position: relative;
  top: 50%;
  left: 25%;
  transform: translateY(-50%);
  padding: 30px;
  margin: 0 auto;
}

.source {
  color: skyblue;
  margin: 0 auto;
}
View Compiled
var animationDelay = 5,
    staggerDelay = 0.02,
    animationTime = 1,
    animationEase = SlowMo.ease.config(0.3, 0.7, false),
    animationExplosivity = 90,
    alphaFactor = 0.9,
    scrollDuration = 1600,
    
    text1 = $(".split1"),
    endText1 = $(".shadow1"),
    text2 = $(".split2"),
    endText2 = $(".shadow2"),
    tl,
    
    split1 = new SplitText(text1),
    endSplit1 = new SplitText(endText1),
    split2 = new SplitText(text2),
    endSplit2 = new SplitText(endText2);

startingLocations1 = [];
endingLocations = [];
startingLocations2 = [];
endingLocations.push([],[]);

$(endSplit1.chars).each(function(i){
  endingLocations[0].push({
    y: endSplit1.chars[i].getBoundingClientRect().top,
    x: endSplit1.chars[i].getBoundingClientRect().left
  });
});
$(endSplit2.chars).each(function(i){
  endingLocations[1].push({
    y: endSplit2.chars[i].getBoundingClientRect().top,
    x: endSplit2.chars[i].getBoundingClientRect().left
  });
});
function random(min, max){
  return (Math.random() * (max - min)) + min;
}
function getAnimation(el, starty, startx, word, i) {
  var randomZ = random(animationExplosivity*-1,     animationExplosivity);
  var tween = new TweenMax.to($(el), animationTime, {
    bezier:{
      type: "thru",
      values: [
        {
          x: random(animationExplosivity*-1, animationExplosivity),
          y: random(animationExplosivity*-1, animationExplosivity),
          z: randomZ,
          autoAlpha: randomZ/animationExplosivity + alphaFactor,
        },
        {
          x: endingLocations[word][i].x - startx,
          y: endingLocations[word][i].y - starty,
          z: 0,
          autoAlpha: 1,
        }
      ],
      autoRotate:false,
    },
    ease: animationEase
  });
  
  return tween;
}

function buildTimeline() {
  tl = new TimelineMax({paused: true});
  $(split1.chars).each(function(i, el){
    console.log(el);
    var starty = split1.chars[i].getBoundingClientRect().top,
        startx = split1.chars[i].getBoundingClientRect().left;
    // tl.add(getAnimation(), i * 0.17);
    
    tl.add(getAnimation(this, starty, startx, 0, i), i * 0.02)
  });
  $(split2.chars).each(function(i){
    var starty = split2.chars[i].getBoundingClientRect().top,
        startx = split2.chars[i].getBoundingClientRect().left;
    tl.add(getAnimation(this, starty, startx, 1, i), i * 0.02);
  });
}
buildTimeline();

// init controller
var controller = new ScrollMagic.Controller();

// create a scene
var scene = new ScrollMagic.Scene({
        duration: scrollDuration,    // the scene should last for a scroll distance of 1200px
        offset: 50    // start this scene after scrolling for 50px
    })
    .setPin("#my-sticky-element"); // pins the element for the the scene's duration

controller.addScene(scene);
scene.on("progress", function (event) {
    console.log("Scene progress changed to " + event.progress);
    var timeWithDelay = event.progress < 0.2 ? 0 : event.progress - 0.2;
    tl.progress(timeWithDelay*2).timeScale(0);
});

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js
  2. https://cdnjs.cloudflare.com/ajax/libs/gsap/2.1.2/TweenMax.min.js
  3. https://s3-us-west-2.amazonaws.com/s.cdpn.io/16327/SplitText3.min.js
  4. https://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.6/ScrollMagic.min.js