Without looking into too much how they did this, it seems that most elements are sized and calculated by the screen dimensions and simply layered on top of each other.
To move the elements, you need to "scrolljack" the page (which I personally dislike on most sites) and then translate it across the x and y axis.
The best way, generally speaking is with CSS3 transforms. Transition.js is a great library for modifying the translations in JavaScript dynamically.
Warning: Scroll events can queue up on some browsers so if a user scrolled a lot really fast and you were running code on each "event" the page would lock up. See this article for an explanation of debouncing events.