2011-12-27 15 views
13

Estoy intentando averiguar cómo hacer que una imagen de fondo se desplace más lentamente que el contenido de la página. No tengo ni idea de cómo se hace. El ejemplo perfecto de lo que intento hacer is hereFondo de desplazamiento lento en Javascript o CSS?

¿Esto se hace en CSS o jQuery/Javascript?

+2

Esto solía llamarse paralaje cuando se desplazaba hacia atrás cuando yo era un niño y quería hacer juegos. Parece que hay algunos recursos que usan el mismo término (por ejemplo, al buscar en Google 'jquery parallax scrolling') –

+5

Javascript. Es significativamente más fácil con jQuery, pero también requiere marcadores HTML/CSS especiales. Ejemplo fresco y sencillo en http://inner.geek.nz/javascript/parallax/. También puede google 'scroll parallax'. – Edwin

+0

@Edwin: Gracias por señalar el nombre correcto. –

Respuesta

15

Esto se hace mediante Javascript (jQuery):

(function() { 
    var a = document.body, 
     e = document.documentElement; 
    $(window).unbind("scroll").scroll(function() { 
     a.style.backgroundPosition = "0px " + -(Math.max(e.scrollTop, a.scrollTop)/8) + "px"; 
    }); 
})(); 
+0

¡Oh, veo cómo se hace !. –

+0

¡Esto es brillante! Solo recuerda que lo pones al final de la página o cuando usas jQuery lo envuelves con la función 'ready'. El fondo debe tener 'posición: fijo' –

0

El efecto sobre el enlace que envió se realiza en Javascript con jQuery.

Si examina el código de un script del sitio here, se puede encontrar:

.style.backgroundPosition="0px "+-(Math.max(e.scrollTop,a.scrollTop)/8)+"px" 

Prácticamente, la propiedad background-position CSS se modifica en la página de desplazamiento para calcular el eje Y dependiendo de la posición página de desplazamiento . Si tiene algún conocimiento de Javascript, jQuery o Mootools, puede reproducir el efecto muy fácilmente.

Creo que es imposible hacerlo solo con CSS.

0

Éste funciona para imágenes de alto bg.

(function() { 
     var body = document.body, 
       e = document.documentElement, 
       scrollPercent; 
     $(window).unbind("scroll").scroll(function() { 
      scrollPercent = 100 * $(window).scrollTop()/($(document).height() - $(window).height()); 
      body.style.backgroundPosition = "0px " + scrollPercent + "%"; 
     }); 
})(); 
Cuestiones relacionadas