Skip to content

Instantly share code, notes, and snippets.

@chitacan
Forked from mbostock/.block
Last active August 28, 2015 05:58
Show Gist options
  • Save chitacan/e842d9a90742e10ea96e to your computer and use it in GitHub Desktop.
Save chitacan/e842d9a90742e10ea96e to your computer and use it in GitHub Desktop.
Smooth Scrolling

This example uses a custom tween that interpolates the window’s vertical scroll offset.

<!DOCTYPE html>
<meta charset="utf-8">
<style>
body {
padding: 40px;
}
h1, h2 {
font-family: "Helvetica Neue";
padding-bottom: 120px;
}
h2 {
padding-bottom: 240px;
}
</style>
<h1>Smooth scrolling!</h1>
<h2>Get ready to scroll, in 3, 2, 1…</h2>
<h1>Whee!</h1>
<h1>Whee!</h1>
<h1>Whee!!!</h1>
<h1>Whee!!!!!</h1>
<h1>Whee!!!</h1>
<h1>Whee!!</h1>
<h1>Whee!!!</h1>
<h1>Whee!!!!!</h1>
<h1>Whee!!!</h1>
<h1>Whee!!</h1>
<h1>Whee!!!</h1>
<h1>Whee!!!!!</h1>
<h1>Whee!!!</h1>
<h1>Whee!!</h1>
<h1>Whee!!!</h1>
<h1>Whee!!!!!</h1>
<h1>Whee!!!</h1>
<h1>Whee!!</h1>
<h1>Whee!!</h1>
<h1>Whee!!</h1>
<h1>Whee!!</h1>
<h1>Whee!!!</h1>
<h1>Whee!!!!!</h1>
<h1>Whee!!!!!!!!!!!!!</h1>
<h1>Whee!!!!!</h1>
<h1>Whee!!!</h1>
<h1>Whee!!</h1>
<h1>Whee!!!</h1>
<h1>Whee!!!!!</h1>
<h1>Whee!!!</h1>
<h1>Whee!!</h1>
<h1>Whee!!!</h1>
<h1>Whee!!!!!</h1>
<h1>Whee!!!!!!!!!!!!!!!!</h1>
<h1>Whee!!!!!</h1>
<h1>Whee!!!</h1>
<h1>Whee!!</h1>
<h1>Whee!!!</h1>
<h1>Whee!!!!!</h1>
<h1>Whee!!!</h1>
<h1>Whee!!</h1>
<h1>Whee!!!</h1>
<h1>Whee!!!!!</h1>
<h1>Whee!!!</h1>
<h1>Whee!!</h1>
<h2>All done!</h2>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js"></script>
<script>
d3.transition()
.delay(1500)
.duration(7500)
.tween("scroll", scrollTween(document.body.getBoundingClientRect().height - window.innerHeight));
function scrollTween(offset) {
return function() {
var i = d3.interpolateNumber(window.pageYOffset || document.documentElement.scrollTop, offset);
return function(t) { scrollTo(0, i(t)); };
};
}
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment