¿Quieres que tu sitio web tenga un toque de magia y llame la atención de tus visitantes? Con este sencillo código JavaScript, puedes añadir un divertido y dinámico efecto de chispas que sigue el cursor del ratón por toda tu página. Es una forma sutil pero efectiva de mejorar la experiencia del usuario y hacer que tu sitio sea más interactivo.
¿Qué es este código y cómo funciona?
El código que nos has proporcionado es un script de JavaScript que crea un efecto visual de «chispas» o «estrellitas» flotantes que aparecen y se desvanecen al mover el cursor por la pantalla. Analicemos brevemente sus componentes clave:
var colour="random";
: Esta línea define el color de las chispas. Puedes dejarlo en «random» para que cambien de color aleatoriamente, o asignarle un color específico como «red», «#f0f», o cualquier código hexadecimal.var sparkles=50;
: Controla la cantidad de chispas que se mostrarán en pantalla. Aumentar este número hará el efecto más denso, pero podría impactar ligeramente el rendimiento en sitios con mucho contenido o en dispositivos más antiguos.- Funciones de Creación y Actualización (
createDiv
,sparkle
,update_star
,update_tiny
): Estas funciones son el cerebro del script. Se encargan de crear los elementos HTML (pequeñosdiv
s) que representan las chispas, posicionarlos en la pantalla y actualizar su tamaño y opacidad para simular el efecto de «brillo» y «desvanecimiento». - Eventos de Interacción (
document.onmousemove
,window.onscroll
,window.onresize
): El script captura los movimientos del ratón (onmousemove
) para que las chispas sigan el cursor. También se adapta a los cambios de tamaño de la ventana y al desplazamiento de la página para asegurar que el efecto funcione correctamente en todas las situaciones.
¿Por qué añadir este efecto a tu web?
Aunque pueda parecer un detalle menor, un efecto como este puede tener varios beneficios:
- Mayor Engagement: Un sitio web interactivo mantiene al usuario más tiempo y lo invita a explorar.
- Diferenciación: Destácate de la competencia ofreciendo una experiencia de usuario única y memorable.
- Atención al Detalle: Demuestra que te preocupas por los pequeños detalles que hacen que tu sitio sea especial.
- ¡Simplemente Divertido!: A veces, un poco de diversión es todo lo que se necesita para dejar una buena impresión.
¿Cómo implementar el código en tu sitio web (usando Code Snippets)?
La forma más sencilla y recomendada para añadir este código a tu sitio de WordPress (o cualquier CMS que soporte snippets) es a través de un plugin como Code Snippets. Aquí te explicamos cómo:
- Instala y activa el plugin «Code Snippets» (si aún no lo tienes).
- Ve a «Snippets» > «Add New» en tu panel de WordPress.
- Asígnale un título descriptivo, como «Efecto Chispas Cursor».
- Copia y pega el código JavaScript completo en el área de código.
- En la sección «Scope» (Ámbito), selecciona «Run Everywhere» (Ejecutar en todas partes) o «Only run on front-end» (Solo ejecutar en el frontend) para que el efecto aparezca en todas las páginas de tu sitio visibles para los usuarios.
- Guarda los cambios y activa el snippet.
¡Y listo! Al recargar tu sitio, deberías ver las chispas siguiendo tu cursor.
<script type="text/javascript">
// <![CDATA[
var colour="random"; // in addition to "random" can be set to any valid colour eg "#f0f" or "red"
var sparkles=50;
/****************************
* Tinkerbell Magic Sparkle *
*(c)2005-13 mf2fm web-design*
* http://www.mf2fm.com/rv *
* DON'T EDIT BELOW THIS BOX *
****************************/
var x=ox=400;
var y=oy=300;
var swide=800;
var shigh=600;
var sleft=sdown=0;
var tiny=new Array();
var star=new Array();
var starv=new Array();
var starx=new Array();
var stary=new Array();
var tinyx=new Array();
var tinyy=new Array();
var tinyv=new Array();
window.onload=function() { if (document.getElementById) {
var i, rats, rlef, rdow;
for (var i=0; i<sparkles; i++) {
var rats=createDiv(3, 3);
rats.style.visibility="hidden";
rats.style.zIndex="999";
document.body.appendChild(tiny[i]=rats);
starv[i]=0;
tinyv[i]=0;
var rats=createDiv(5, 5);
rats.style.backgroundColor="transparent";
rats.style.visibility="hidden";
rats.style.zIndex="999";
var rlef=createDiv(1, 5);
var rdow=createDiv(5, 1);
rats.appendChild(rlef);
rats.appendChild(rdow);
rlef.style.top="2px";
rlef.style.left="0px";
rdow.style.top="0px";
rdow.style.left="2px";
document.body.appendChild(star[i]=rats);
}
set_width();
sparkle();
}}
function sparkle() {
var c;
if (Math.abs(x-ox)>1 || Math.abs(y-oy)>1) {
ox=x;
oy=y;
for (c=0; c<sparkles; c++) if (!starv[c]) {
star[c].style.left=(starx[c]=x)+"px";
star[c].style.top=(stary[c]=y+1)+"px";
star[c].style.clip="rect(0px, 5px, 5px, 0px)";
star[c].childNodes[0].style.backgroundColor=star[c].childNodes[1].style.backgroundColor=(colour=="random")?newColour():colour;
star[c].style.visibility="visible";
starv[c]=50;
break;
}
}
for (c=0; c<sparkles; c++) {
if (starv[c]) update_star(c);
if (tinyv[c]) update_tiny(c);
}
setTimeout("sparkle()", 40);
}
function update_star(i) {
if (--starv[i]==25) star[i].style.clip="rect(1px, 4px, 4px, 1px)";
if (starv[i]) {
stary[i]+=1+Math.random()*3;
starx[i]+=(i%5-2)/5;
if (stary[i]<shigh+sdown) {
star[i].style.top=stary[i]+"px";
star[i].style.left=starx[i]+"px";
}
else {
star[i].style.visibility="hidden";
starv[i]=0;
return;
}
}
else {
tinyv[i]=50;
tiny[i].style.top=(tinyy[i]=stary[i])+"px";
tiny[i].style.left=(tinyx[i]=starx[i])+"px";
tiny[i].style.width="2px";
tiny[i].style.height="2px";
tiny[i].style.backgroundColor=star[i].childNodes[0].style.backgroundColor;
star[i].style.visibility="hidden";
tiny[i].style.visibility="visible"
}
}
function update_tiny(i) {
if (--tinyv[i]==25) {
tiny[i].style.width="1px";
tiny[i].style.height="1px";
}
if (tinyv[i]) {
tinyy[i]+=1+Math.random()*3;
tinyx[i]+=(i%5-2)/5;
if (tinyy[i]<shigh+sdown) {
tiny[i].style.top=tinyy[i]+"px";
tiny[i].style.left=tinyx[i]+"px";
}
else {
tiny[i].style.visibility="hidden";
tinyv[i]=0;
return;
}
}
else tiny[i].style.visibility="hidden";
}
document.onmousemove=mouse;
function mouse(e) {
if (e) {
y=e.pageY;
x=e.pageX;
}
else {
set_scroll();
y=event.y+sdown;
x=event.x+sleft;
}
}
window.onscroll=set_scroll;
function set_scroll() {
if (typeof(self.pageYOffset)=='number') {
sdown=self.pageYOffset;
sleft=self.pageXOffset;
}
else if (document.body && (document.body.scrollTop || document.body.scrollLeft)) {
sdown=document.body.scrollTop;
sleft=document.body.scrollLeft;
}
else if (document.documentElement && (document.documentElement.scrollTop || document.documentElement.scrollLeft)) {
sleft=document.documentElement.scrollLeft;
sdown=document.documentElement.scrollTop;
}
else {
sdown=0;
sleft=0;
}
}
window.onresize=set_width;
function set_width() {
var sw_min=999999;
var sh_min=999999;
if (document.documentElement && document.documentElement.clientWidth) {
if (document.documentElement.clientWidth>0) sw_min=document.documentElement.clientWidth;
if (document.documentElement.clientHeight>0) sh_min=document.documentElement.clientHeight;
}
if (typeof(self.innerWidth)=='number' && self.innerWidth) {
if (self.innerWidth>0 && self.innerWidth<sw_min) sw_min=self.innerWidth;
if (self.innerHeight>0 && self.innerHeight<sh_min) sh_min=self.innerHeight;
}
if (document.body.clientWidth) {
if (document.body.clientWidth>0 && document.body.clientWidth<sw_min) sw_min=document.body.clientWidth;
if (document.body.clientHeight>0 && document.body.clientHeight<sh_min) sh_min=document.body.clientHeight;
}
if (sw_min==999999 || sh_min==999999) {
sw_min=800;
sh_min=600;
}
swide=sw_min;
shigh=sh_min;
}
function createDiv(height, width) {
var div=document.createElement("div");
div.style.position="absolute";
div.style.height=height+"px";
div.style.width=width+"px";
div.style.overflow="hidden";
return (div);
}
function newColour() {
var c=new Array();
c[0]=255;
c[1]=Math.floor(Math.random()*256);
c[2]=Math.floor(Math.random()*(256-c[1]/2));
c.sort(function(){return (0.5 - Math.random());});
return ("rgb("+c[0]+", "+c[1]+", "+c[2]+")");
}
// ]]>
</script>
Consideraciones SEO y de Rendimiento
Si bien este efecto es visualmente atractivo, es importante tener en cuenta algunas consideraciones:
- Impacto en el rendimiento: Para la mayoría de los sitios modernos, este script es ligero y no debería afectar significativamente la velocidad de carga. Sin embargo, si notas alguna lentitud, puedes reducir el valor de
sparkles
o probar con un script más simple. - Experiencia de Usuario: Asegúrate de que el efecto no sea intrusivo ni molesto para el usuario. El código proporcionado es bastante sutil, pero siempre es bueno obtener feedback.
- Compatibilidad: Este script está diseñado para funcionar en la mayoría de los navegadores modernos. No obstante, siempre es buena práctica realizar pruebas en diferentes navegadores y dispositivos.
Añadir este tipo de detalles puede transformar tu sitio web de funcional a fascinante. ¿Te animas a darle un toque mágico a tu web?
Fuente: TINKERBELL MOUSE EFFECT