Ver Mensaje Individual
  #58 (permalink)  
Antiguo 25/12/2007, 17:47
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 4 meses
Puntos: 45
Re: scripts navideños

Bueno, es la primera vez que posteo en este hilo... aunque lo veo siempre! jeje.

Unas mejoras para un script de lo más anticuado (incluso con browser sniffing):

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" xml:lang="es" lang="es">
<
head>
<
meta http-equiv="Content-type" content="text/html;charset=iso-8859-1" />
<
meta name="Author" content="derkeNuke" />
<
title>Página nueva</title>
<
style type="text/css">
body height100%; }
</
style>
</
head>

<
body>


<
script type="text/javascript">
<!--


/******************************************
* Snow Effect Script- By Altan d.o.o. ([email protected], http://www.altan.hr/snow/index.html)
* Visit Dynamic Drive (http://www.dynamicdrive.com/) for full source code
* Modified Dec 31st, 02' by DD. This notice must stay intact for use
(modificado por derkeNuke, también ;-) )
******************************************/


//Configure below to change URL path to the snow image
// por ejemplo: http://fresh.t-systems-sfr.com/unix/src/privat2/mweather-0.6.0.tar.gz:a/mweather/images/snow.gif
var snowsrc="snow.gif";
var 
imgWidth 50imgHeight 50;        // dimensiones de snowsrc
// Configure below to change number of snow to render
var no 10;


var 
dxxpyp// coordinate and position variables
var amstxsty// amplitude and step variables
var abajoN 0;

var 
doc_width document.body.clientWidth || window.innerWidth;
var 
doc_height document.body.clientHeight || window.innerHeight;

dx = new Array();
xp = new Array();
yp = new Array();
am = new Array();
stx = new Array();
sty = new Array();
scrollY = new Array();

for (var 
i=0no; ++ i) { 
    
dx[i] = 0// set coordinate variables
    
xp[i] = Math.random()*(doc_width-imgWidth);    // set position variables
    
yp[i] = Math.random()*(doc_height-imgHeight);
    
am[i] = Math.random()*20;                // set amplitude variables
    
stx[i] = 0.02 Math.random()/10;            // set step variables
    
sty[i] = 0.7 Math.random();                // set step variables
    
scrollY[i] = 0;                            // scrollY para cada punto
    
document.write('<div id="dot'+i+'" style="POSITION: absolute; Z-INDEX: '+i+'; width:'+imgWidth+'px; height:'+imgHeight+'px; background: url('+snowsrc+') no-repeat; ">&nbsp;</div>');
}



function 
snow() { // IE and NS6 main animation function
    
for (var i=0no; ++ i) { // iterate for every dot
        
yp[i] += sty[i];            // un paso más en la coordenada Y
        
if (yp[i] > doc_height-50) {        // Si nos salimos de la pantalla por abajo con el copo
            // Que el copo vuelva a su nueva regeneración, sí, pero dejaremos una copia allí donde estuviera cuando llegue abajo
            
var copia document.getElementById("dot"+i).cloneNode(true);
            
copia.setAttribute("id""abajo"+abajoN++);
            
document.body.appendChildcopia );
            
// generamos la nueva posición y las nuevas variables para este copo
            
xp[i] = Math.random()*(doc_width-am[i]-imgHeight);        // Generamos una X aleatoria
            
yp[i] = 0;                                        // Reseteamos la posición Y
            
stx[i] = 0.02 Math.random()/10;                // Inicializamos de nuevo los stepX e stepY
            
sty[i] = 0.7 Math.random();
        }
        
dx[i] += stx[i];            // Un paso más en la coordenada X
        
        
document.getElementById("dot"+i).style.top = (yp[i] + scrollY[i]) + "px";
        
document.getElementById("dot"+i).style.left = (xp[i] + am[i]*Math.sin(dx[i])) + "px";

    }
    
setTimeout("snow()"10);
}

window.onscroll = function() {
    var 
scrTop window.document.documentElement.scrollTop;
    for (var 
i=0no; ++ i) {
        
scrollY[i] = scrTop;
    }
    for(var 
i=0i<abajoNi++) {
        
document.getElementById("abajo"+i).style.top = (scrTop+doc_height-imgHeight) + "px";
    }
}

snow();

// -->
</script>

<p>Nulla quis arcu quis turpis molestie ultricies. Praesent vel nibh. Morbi neque arcu, varius vel, iaculis vel, hendrerit sed, libero. Integer lacinia tortor ut tellus. Aenean vulputate justo quis neque. Nam lacus. Suspendisse quam nulla, aliquam quis, sollicitudin ut, euismod et, dui. Vestibulum eros justo, euismod ut, volutpat quis, tincidunt et, ipsum. Vivamus in nulla. Mauris pellentesque.</p>

<p>Nunc cursus eros in mi. In fermentum, nulla in vulputate hendrerit, lorem lectus scelerisque tortor, eget tempor lectus orci ac velit. Nullam luctus, dolor a dapibus pulvinar, ligula eros porta est, ut sed.</p>

<p>Nulla quis arcu quis turpis molestie ultricies. Praesent vel nibh. Morbi neque arcu, varius vel, iaculis vel, hendrerit sed, libero. Integer lacinia tortor ut tellus. Aenean vulputate justo quis neque. Nam lacus. Suspendisse quam nulla, aliquam quis, sollicitudin ut, euismod et, dui. Vestibulum eros justo, euismod ut, volutpat quis, tincidunt et, ipsum. Vivamus in nulla. Mauris pellentesque.</p>

<p>Nunc cursus eros in mi. In fermentum, nulla in vulputate hendrerit, lorem lectus scelerisque tortor, eget tempor lectus orci ac velit. Nullam luctus, dolor a dapibus pulvinar, ligula eros porta est, ut sed.</p>

<p>Nulla quis arcu quis turpis molestie ultricies. Praesent vel nibh. Morbi neque arcu, varius vel, iaculis vel, hendrerit sed, libero. Integer lacinia tortor ut tellus. Aenean vulputate justo quis neque. Nam lacus. Suspendisse quam nulla, aliquam quis, sollicitudin ut, euismod et, dui. Vestibulum eros justo, euismod ut, volutpat quis, tincidunt et, ipsum. Vivamus in nulla. Mauris pellentesque.</p>

<p>Nunc cursus eros in mi. In fermentum, nulla in vulputate hendrerit, lorem lectus scelerisque tortor, eget tempor lectus orci ac velit. Nullam luctus, dolor a dapibus pulvinar, ligula eros porta est, ut sed.</p>

<p>Nulla quis arcu quis turpis molestie ultricies. Praesent vel nibh. Morbi neque arcu, varius vel, iaculis vel, hendrerit sed, libero. Integer lacinia tortor ut tellus. Aenean vulputate justo quis neque. Nam lacus. Suspendisse quam nulla, aliquam quis, sollicitudin ut, euismod et, dui. Vestibulum eros justo, euismod ut, volutpat quis, tincidunt et, ipsum. Vivamus in nulla. Mauris pellentesque.</p>

<p>Nunc cursus eros in mi. In fermentum, nulla in vulputate hendrerit, lorem lectus scelerisque tortor, eget tempor lectus orci ac velit. Nullam luctus, dolor a dapibus pulvinar, ligula eros porta est, ut sed.</p>

<p>Nulla quis arcu quis turpis molestie ultricies. Praesent vel nibh. Morbi neque arcu, varius vel, iaculis vel, hendrerit sed, libero. Integer lacinia tortor ut tellus. Aenean vulputate justo quis neque. Nam lacus. Suspendisse quam nulla, aliquam quis, sollicitudin ut, euismod et, dui. Vestibulum eros justo, euismod ut, volutpat quis, tincidunt et, ipsum. Vivamus in nulla. Mauris pellentesque.</p>

<p>Nunc cursus eros in mi. In fermentum, nulla in vulputate hendrerit, lorem lectus scelerisque tortor, eget tempor lectus orci ac velit. Nullam luctus, dolor a dapibus pulvinar, ligula eros porta est, ut sed.</p>

</body>
</html> 

Se acumula la nieve abajo y además permite el scrolleo... (para tocar un poco más las narices).

Que se sepa que yo no apoyo el uso de estos scripts en páginas web que no se dediquen a ésto de manera docente o experimental... por eso avanzo en ello (por eso, y porque en navidad la gente postea menos que nunca... snif ).



Y cabría hacer uno con clases y objetos, un poco menos dependiente de las variables globales... al fin y al cabo, sólo son ondas creadas con senos. Si me veo con ganas quizás lo implemente... de momento que alguien proponga algún que otro retillo.. muy bueno éste, seoista.



Un saludo navideño

PD: Que nadie pida que los copos se vayan apilando en la parte inferior
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.