jQuery - Backgrounds animados

jQuery - Backgrounds animados

Ya habíamos hablado sobre una técnica para animar fondos con Mootools; en esta ocasión vamos a ver algo similar pero con jQuery.

Se trata de lograr un efecto de desplazamiento automático de la imagen usada en el fondo, que en este caso son nubes y así se logra crear la sensación de un cielo con nubes que se desplazan.

Implementación

Primero tenemos que crear la estructura HTML que contendrá el fondo:

<div class="clouds">
</div>

Segundo agregamos los estilos a la CSS:

body {
margin:0;
padding:0;
background:#fff;
}

.clouds {
width:300px;
height:300px;
margin:10px;
border:2px solid #ccc;
background:#3e83c8 url(images/bg_clouds.png) repeat-x 0 bottom;
}

En la clase clouds, está la imagen de fondo.

Tercero implementamos el Javascript:

$(document).ready(function () {
// velocidad en milisengundos
var scrollSpeed = 70;
// dirección del desplazamiento
var direction = 'h';
// posición de arranque
var current = 0;
function bgscroll(){
// 1 pixel row at a time
current -= 1;
// move the background with backgrond-position css properties
$('div.clouds').css("backgroundPosition", (direction == 'h') ? current+"px 0" : "0 " + current+"px");
}
//Calls the scrolling function repeatedly
var init = setInterval("bgscroll()", scrollSpeed);
});

Cuarto, examinamos el código del plugin:

(function() {
$.fn.bgscroll = $.fn.bgScroll = function( options ) {
if( !this.length ) return this;
if( !options ) options = {};
if( !window.scrollElements ) window.scrollElements = {};
for( var i = 0; i < this.length; i++ ) {
var allowedChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
var randomId = '';
for( var l = 0; l < 5; l++ ) randomId += allowedChars.charAt( Math.floor( Math.random() * allowedChars.length ) );
this[ i ].current = 0;
this[ i ].scrollSpeed = options.scrollSpeed ? options.scrollSpeed : 70;
this[ i ].direction = options.direction ? options.direction : 'h';
window.scrollElements[ randomId ] = this[ i ];
eval( 'window[randomId]=function(){var axis=0;var e=window.scrollElements.' + randomId + ';e.current -= 1;if (e.direction == "h") axis = e.current + "px 0";else if (e.direction == "v") axis = "0 " + e.current + "px";else if (e.direction == "d") axis = e.current + "px " + e.current + "px";$( e ).css("background-position", axis);}' );
setInterval( 'window.' + randomId + '()', options.scrollSpeed ? options.scrollSpeed : 70 );
}
return this;
}
})(jQuery);

El código del plugin lo guardamos en una archivo JS y los enlazamos en la sección HEAD del HTML de la página de la siguiente forma:

<script type="text/javascript" src="js/jquery-1.3.1.min.js"></script>

Configuración

Como se puede apreciar en la implementación del Javascript, hay varios parámetros que permiten definir el comportamiento de la animación, el siguiente ejemplo es la forma que debemos usar para definir valores como desplazamiento, dirección, etc.:

$( function() {
$('.clouds1').bgscroll({scrollSpeed:10 , direction:'h' });
$('.clouds2').bgscroll({direction:'d'});
});

Corolario

En la página de queness.com encontramos esta implementación, además de podemos probar un demo funcional que también lo podemos descargar en un archivo ZIP que contiene además unas variaciones adicionales del mismo efecto. Estos demos se pueden correr sin necesidad de montarlos en un servidor.

La implementación a simple vista puede parecer algo compleja, pero en realidad es muy sencilla, ya que tenemos que tener en cuenta que se explican muchas cosas como el plugin, que para nuestra implementación sólo cuestión de enlazar el archivo.

Backgrounds animados con jQuery

Visitar/documentación/demostración: www.queness.com/post/2607/create-background-scrolling-effect-with-jquery

Por Diego Cambiaso

Comunicador Social, Desarrollador de Software y UX Designer. Blogger desde el 2006, creador de Pixelco Tech. Viajero y fotógrafo. Entusiasta del diseño, apasionado por la tecnología y el social media. EN-ES-IT