-
Notifications
You must be signed in to change notification settings - Fork 2.3k
Tips (v3.x)
It’s important that reveal()
calls be made as close to last in your page as possible, so that:
- Elements on the page have loaded
- Any other 3rd party libraries have had a chance to run
- Any other styles added to your elements wont be overwritten
<!DOCTYPE html>
<html>
<head>
<!-- load and instantiate ScrollReveal first -->
<script src="js/scrollreveal.min.js"></script>
<script>
window.sr = ScrollReveal();
</script>
</head>
<body>
<div class="fooContainer">
<div class="fooReveal"> Foo </div>
<div class="fooReveal"> Foo </div>
<div class="fooReveal"> Foo </div>
</div>
<!-- make reveal calls last -->
<script>
sr.reveal('.fooReveal', { container: '.fooContainer' });
</script>
</body>
</html>
In most cases, your elements will start at opacity: 0
so they can fade in. However, since JavaScript loads after the page begins rendering, you might see your elements flickering as they begin rendering before being hidden by ScrollReveal's JavaScript.
The ideal solution is to set your reveal elements visibility to hidden in the <head>
of your page, to ensure they render hidden while your JavaScript loads:
<!DOCTYPE html>
<html>
<head>
<!-- load and instantiate ScrollReveal first -->
<script src="js/scrollreveal.min.js"></script>
<script>
window.sr = ScrollReveal();
// Add class to <html> if ScrollReveal is supported
// Note: this method is deprecated, and only works in version 3
if (sr.isSupported()) {
document.documentElement.classList.add('sr');
}
</script>
<style>
/* Ensure elements load hidden before ScrollReveal runs */
.sr .fooReveal { visibility: hidden; }
</style>
</head>
<body>
<div class="fooContainer">
<div class="fooReveal"> Foo </div>
<div class="fooReveal"> Foo </div>
<div class="fooReveal"> Foo </div>
</div>
<!-- make reveal calls last -->
<script>
sr.reveal('.fooReveal', { container: '.fooContainer' });
</script>
</body>
</html>
Note: If you prefer not to put styles in the
<head>
of your page, including this style in your primary stylesheet will still help with element flickering since your CSS will likely load before your JavaScript.
ScrollReveal supports 3d rotation out of the box, but you may want to emphasize the effect by specifying a perspective property on your container.
<!DOCTYPE html>
<html>
<head>
<!-- load and instantiate ScrollReveal first -->
<script src="js/scrollreveal.min.js"></script>
<script>
window.sr = ScrollReveal();
// Add class to <html> if ScrollReveal is supported
// Note: this method is deprecated, and only works in version 3
if (sr.isSupported()) {
document.documentElement.classList.add('sr');
}
</script>
<style>
/* Ensure elements load hidden before ScrollReveal runs */
.sr .fooReveal { visibility: hidden; }
/* add perspective to your container */
.fooContainer { perspective: 800px; }
</style>
</head>
<body>
<div class="fooContainer">
<div class="fooReveal"> Foo </div>
<div class="fooReveal"> Foo </div>
<div class="fooReveal"> Foo </div>
</div>
<!-- make reveal calls last -->
<script>
// use rotation in reveal configuration
sr.reveal('.fooReveal', { container: '.fooContainer', rotate: {x: 65} });
</script>
</body>
</html>