On scroll animaties

Karel-Jan 10 december 2014

Het laten animeren van bepaalde elementen bij het scrollen van een website is een populaire techniek. Deze zogenaamde on scroll animaties worden in de praktijk te pas en te onpas gebruikt. Veel gratis en premium WordPress thema’s maken gebruik van deze techniek. In veel gevallen heeft deze techniek geen toegevoegde waarde maar voor bepaalde onderdelen kan het echter de gebruikerservaring verbeteren. Deze techniek is vrij eenvoudig toepasbaar.

Sinds CSS 3 is het mogelijk om met CSS animaties te maken. Dankzij deze techniek is het daardoor erg eenvoudig om on scroll animaties te maken. Voor de CSS animaties gebruiken we het populaire animate.css bestand van Daniel Eden. Hiermee is het een fluitje van een cent om CSS animaties te maken. Daarnaast gebruiken we de jQuery Waypoints plugin voor het triggeren van een functie als er een bepaalde scroll positie bereikt is.

Laten we deze bestanden eerst aan de WordPress website toevoegen.

</p>
<p>function prefix_load_scripts() {</p>
<p>	// Waypoints<br />
	wp_enqueue_script(<br />
		'waypoints',<br />
		get_template_directory_uri() . '/assets/waypoints/waypoints.min.js',<br />
		array( 'jquery' ),<br />
		'2.0.5',<br />
		true<br />
	);</p>
<p>	// Animate<br />
	wp_enqueue_style(<br />
		'animate',<br />
		get_template_directory_uri() . '/assets/animate/animate.min.css,<br />
		'1.0.0'<br />
	);</p>
<p>	// Theme<br />
	wp_enqueue_script(<br />
		'site',<br />
		get_template_directory_uri() . '/assets/theme/site.js',<br />
		array( 'jquery', 'waypoints' ),<br />
		'1.0.0',<br />
		true<br />
	);</p>
<p>}</p>
<p>add_action( 'wp_enqueue_scripts', 'prefix_load_scripts' );</p>
<p>

De on scroll animatie techniek is toepasbaar op bijna alle HTML elementen. De HTML in mijn voorbeeld ziet er als volgt uit:

</p>
<p>&lt;section class=&quot;section animate&quot; data-animation-type=&quot;fadeInRight&quot; data-animation-delay=&quot;0.3s&quot;&gt;<br />
	&lt;p&gt;<br />
		Eerste content blok<br />
	&lt;/p&gt;<br />
&lt;/section&gt;</p>
<p>&lt;section class=&quot;section alt animate&quot; data-animation-type=&quot;fadeInLeft&quot; data-animation-delay=&quot;0.6s&quot;&gt;<br />
	&lt;p&gt;<br />
		Tweede content blok<br />
	&lt;/p&gt;<br />
&lt;/section&gt;</p>
<p>&lt;section class=&quot;section animate&quot; data-animation-type=&quot;fadeInRight&quot; data-animation-delay=&quot;0.9s&quot;&gt;<br />
	&lt;p&gt;<br />
		Derde content blok<br />
	&lt;/p&gt;<br />
&lt;/section&gt;</p>
<p>

De sections hebben de classes ‘section’ en ‘alt’ voor het stijlen van deze elementen. De ‘animate’ class zorgt ervoor dat dit element geanimeerd wordt. Met behulp van de extra data attributen kan het type animatie en een animatie vertraging ingesteld worden. Met een stukje javascript die we toevoegen aan site.js kunnen we de on scroll animatie functioneel maken.

</p>
<p>( function( $ ) {<br />
	$( document ).ready( function() {</p>
<p>		/**<br />
		* Scrolling<br />
		*/<br />
		function onScroll( items ) {<br />
			items.each( function() {<br />
				animationClass = this.attr( 'data-animation' );<br />
				animationDelay = this.attr( 'data-animation-delay' );</p>
<p>				this.css( {<br />
					'-webkit-animation-delay':  animationDelay,<br />
					'-moz-animation-delay':     animationDelay,<br />
					'animation-delay':          animationDelay<br />
				} );</p>
<p>				this.waypoint( function() {<br />
					this.addClass( 'animated' ).addClass( animationClass );<br />
				}, {<br />
					offset: '80%'<br />
				} );<br />
			} );<br />
		}</p>
<p>		onScroll( $( '.animate' ) );</p>
<p>	} );<br />
} )( jQuery );</p>
<p>

0 reacties

Altijd op de hoogte blijven?