The accordion effect can be achieved though just hiding and showing elements.
For example, you could use jQuery and slideToggle on the clicked accordion element, and then slideUp on all the other accordion elements to achieve a pretty simple and nice effect. Add in some css or javascript to size it to the height of your screen and then use javascript scroll to it and you're pretty much done.
Also note that that site uses ajax to load stuff dynamically, instead of having it all on one page. This greatly reduces the size of the site, and can help speed up the initial load, at the cost of having to load each accordion pane as you open them.
Here's a really basic example I threw together. It doesn't do ajax loading, but it gives you the accordion effect: https://jsfiddle.net/uw9gaep2/
HTML for one of the panes (you'll want to set the content
div to display:none
via css or a style tag):
<div class="pane">
<div class="title">
Thing 1
</div>
<div class="content">
blahblah
</div>
</div>
jQuery:
$('.title').on('click', function() {
// Save the content and title to vars
var $title = $(this);
var $content = $title.next('.content');
// Slide toggle the one we want
$content.slideToggle('fast', function() {
// Once it's done scroll to the title (http://stackoverflow.com/a/6677069/1687909)
$('html, body').animate({
scrollTop: $title.offset().top
}, 200);
});
// Slide up all the other ones
$('.content').not($content).slideUp('fast');
});