Como no se el nombre técnico de lo contrario pues lo he llamado invertido :P, pero vamos: Hacer que una capa con background negra se vaya haciendo transparente de forma progresiva y deje ver lo que hay detrás.
Al principio tenía un código bastante elegante, hasta que me enteré que en javascript la instrucción setTimeOut no detiene la ejecución del script sino que lanza la funcion llamada al tiempo indicado pero sigue interpretando el código que hay a continuación. Así que se me ocurrió lanzar varios eventos con un "delay" de tiempo progresivo entre ellos, tal que así:
Código Javascript:
Ver original
function cerrar_ventana() { /*Aquí va un código que hace cosas antes de cerrar la ventana, como borrar algún objeto, nada relevante para este ejemplo*/ for (var i=80; i>0; i--) { var delay = (90 - i)/10; var total = delay * 250; setTimeout("fadeout("+i+")", total); } } function fadeout(i) { var marco = document.getElementById("marco_intro"); if (i >= 10 && i < 100) { marco.style.opacity= '0.'+i; marco.style.filter = 'alpha(opacity='+i+')'; } if (i > 1 && i < 10) { marco.style.opacity= '0.1'; marco.style.filter = 'alpha(opacity='+i+')'; marco.style.visibility = "hidden"; //Esto es para que pueda clickearse en lo que hay debajo después de que la capa se haya hecho transparente. } }
Esto funciona, llevando la opacidad desde un 80% a un 10%, pero me gustaría saber si hay alguna forma de hacerlo más limpiamente... pues me parece una auténtica "chapucilla".