Foros del Web » Programando para Internet » Javascript »

Cambiar propiedades de una capa (style) al hacer scroll

Estas en el tema de Cambiar propiedades de una capa (style) al hacer scroll en el foro de Javascript en Foros del Web. Me gustaría saber cómo hacer que al desplazar el scroll del navegador en una página web cambien las propiedades de una capa, por ejemplo el ...
  #1 (permalink)  
Antiguo 08/08/2011, 08:49
 
Fecha de Ingreso: junio-2003
Ubicación: Cantabria
Mensajes: 61
Antigüedad: 20 años, 10 meses
Puntos: 1
Cambiar propiedades de una capa (style) al hacer scroll

Me gustaría saber cómo hacer que al desplazar el scroll del navegador en una página web cambien las propiedades de una capa, por ejemplo el top.

Me refiero a este tipo de efecto:
http://contrastrebellion.com/

Si os fijáis en esta web, tan buena, vemos que al hacer scroll el logotipo tiene algo de movimiento. El puño se desplaza hacia arriba y abajo y el semicirculo de atrás rota.

Veo en el código html que el "style:top" de la capa varía cuando haces el scroll por otro lado veo en la hoja de estilo que la capa tiene un top fijo y una posición absoluta.
Lo he visto en más páginas y quería saber cómo se hace.

Un saludo.
  #2 (permalink)  
Antiguo 08/08/2011, 09:21
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: Cambiar propiedades de una capa (style) al hacer scroll

Está basado en algo así:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Documento sin título</title>
<
script type="text/javascript">
onscroll=function(){
    var 
sc=Math.max(document.documentElement.scrollTop,document.body.scrollTop);
    if(
sc>300)
        
document.getElementById('test').style.color='red';
    else
        
document.getElementById('test').style.color='green';
    
document.getElementById('test').innerHTML=sc;
}
</script>

</head>

<body>
<div style="position:fixed" id="test"></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />

</body>
</html> 
  #3 (permalink)  
Antiguo 10/08/2011, 01:37
 
Fecha de Ingreso: junio-2003
Ubicación: Cantabria
Mensajes: 61
Antigüedad: 20 años, 10 meses
Puntos: 1
Respuesta: Cambiar propiedades de una capa (style) al hacer scroll

Gracias por tu ayuda! sigo pegándome con ello.

Un saludo.
  #4 (permalink)  
Antiguo 10/08/2011, 05:31
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 5 meses
Puntos: 66
Respuesta: Cambiar propiedades de una capa (style) al hacer scroll

hola shiryu,
a lo mejor esto te vale. He buscado un poco por allí, un poco por alla, montado una función para mover un div por debajo de otro y al final me ha salido esto:

Código Javascript:
Ver original
  1. <html xmlns="http://www.w3.org/1999/xhtml" >
  2. <head>
  3.     <title>Untitled Page</title>
  4.     <script type="text/javascript">
  5.     //la variable s detecta si hemos dado a la rueda hacia arriba o hacia abajo
  6.     var s;
  7. function handle(delta) {
  8.     if (delta < 0)
  9.         s = "down";
  10.     else
  11.         s = "up";
  12.     moverDiv();
  13. }
  14.  
  15. function wheel(event){
  16.     var delta = 0;
  17.     if (!event) event = window.event;
  18.     if (event.wheelDelta) {
  19.         delta = event.wheelDelta/120;
  20.         if (window.opera) delta = -delta;
  21.     } else if (event.detail) {
  22.         delta = -event.detail/3;
  23.     }
  24.     if (delta)
  25.         handle(delta);
  26. }
  27. function moverDiv()
  28. {
  29.     if(s=='down')
  30.     {
  31.         var bajar = parseInt(document.getElementById('rojo').style.top);
  32.         if(isNaN(bajar))
  33.         bajar=0;
  34.         var topeAmarillo = parseInt(document.getElementById('amarillo').style.top);
  35.         if(isNaN(topeAmarillo))
  36.         topeAmarillo=0;
  37.         //si el top de rojo es menor que el del amarillo lo bajamos 10px
  38.         if(bajar < topeAmarillo)
  39.         document.getElementById('rojo').style.top = bajar + 10;
  40.        
  41.     }
  42.     else
  43.     {
  44.         var subir = parseInt(document.getElementById('rojo').style.top);
  45.         if(isNaN(subir))
  46.         subir=0;
  47.         var topePagina=0;
  48.         //si no está al principio de la página no lo subimos 10px
  49.         if(subir!=topePagina)
  50.         document.getElementById('rojo').style.top = subir - 10;
  51.        
  52.     }
  53. }
  54.  
  55. /* Initialization code. */
  56. if (window.addEventListener)
  57.     window.addEventListener('DOMMouseScroll', wheel, false);
  58.     window.onmousewheel = document.onmousewheel = wheel;
  59.     </script>
  60. </head>
  61. <body>
  62.     <form id="form1" >
  63.     <div>
  64.     <div id="amarillo" style="z-index:2;top:180px;background-color:yellow;position:absolute;width:200px;height:100px"></div>
  65.     <div id="rojo" style="z-index:1;left:60px;background-color:Red;position:absolute;width:100px;height:200px"></div>
  66.    
  67.     </div>
  68.     </form>
  69. </body>
  70. </html>

si te vale esta página de ejemplo la única función que hay que 'tunear' sería la de moverDiv(), el resto es para detectar el movimiento de la rueda.

saludos.

Etiquetas: html, propiedades, scroll, style, capas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:51.