Usa Jquery para “apagar las luces” al ver un video

Algunos de los videos que podemos encontrar en YouTube poseen una propiedad interesante llamada “Apaga las luces“. Su atractivo es que al seleccionarlo, la página se oscurece y permite ver el video como en una sala de cine.

Por si no lo sabías, hay una forma de implementar esta función utilizando jQuery. En el siguiente tutorial les explicaremos de qué forma pueden implementar este genial y sencillo efecto.

El problema

Nuestro ejemplo es simple. Consiste en una cabecera, el video, el botón “Apagar las luces” y la barra lateral con información del video. En el código que verás a continuación podrás apreciar el div “command” que contiene el link “lightSwitcher”, el div “movie” que contiene el video y el div “description” que actúa como barra lateral.


<div id="container">
<div id=”header”>
<h1>Janko At Warp Speed</h1>
<h2>Turn off the lights - demo</h2>
<div id=”command”>
<a class=”lightSwitcher” href=”#”>Turn off the lights</a>
</div>
</div>
<div id=”movie”>
<object width=”560″ height=”340″>
<param name=”movie” value=”http://www.youtube.com/v/Mlahvvymkxc&hl=en&fs=1&color1=0×3a3a3a&color2=0×999999″ />
<param name=”allowFullScreen” value=”true” />
<param name=”allowscriptaccess” value=”always” />
<embed src=”http://www.youtube.com/v/Mlahvvymkxc&hl=en&fs=1&color1=0×3a3a3a&color2=0×999999″
type=”application/x-shockwave-flash” allowscriptaccess=”always” allowfullscreen=”true” width=”560″ height=”340″>
</embed>
</object>
</div>
<div id=”description”>
<p>Some description ges here</p>
</div>
</div>

El CSS para esto es sencillo:


body {font-family:Arial, Sans-Serif; font-size:13px; text-align:center; margin:0px; }
#container { width:960px; margin:0px auto; text-align:left; overflow:hidden;}
#movie {border:solid 1px #dcdcdc; float:left; width:560px; text-align:left; margin-right:20px;}
#description { float:left; width:320px;border:solid 1px #dcdcdc; padding: 10px 20px;}
.lightSwitcher {background-image:url(light_bulb_off.png); background-repeat:no-repeat; background-position:left;
padding: 0 0 0 20px; outline:none; text-decoration:none;}
.lightSwitcher:hover {text-decoration:underline;}

Que se haga la… oscuridad

Cuando se hace clic sobre el link “Apaga las luces”, necesitamos que se oscurezca toda la página. Todo, a excepción de la película. Esto se puede lograr utilizando un div que debe tener exactamente las mismas dimensiones que el documento actual y un fondo negro semi-transparente. Este div necesita ser posicionado de forma absoluta dentro de su container posicionado relativamente (y eso es BODY) y debe extenderse desde la esquina superior izquierda hasta la esquina inferior derecha.

Añadamos un div al final de nuestro markup:

<div id="shadow"></div>

Aquí algo importante es z-index. Para lograr que cubra la página completa, debe tener el z-index más grande. Los elementos embebidos se verán, de cualquier forma. Es fácil posicionar un div en la esquina superior izquierda y programar su ancho en un 100%. ¿Pero qué pasa con la altura? Si programamos la altura de nuestro div “shadow” en un 100% el mismo cubrirá toda la página sólo si contiene algo más largo que una ventana o si tenemos scrollbars. De otra forma, sólo tapará el contenido.

Involucremos jQuery:

$(document).ready(function(){
$(”#shadow”).css(”height”, $(document).height()).hide();
});

Y…. Acción!

Este código programa la altura del div “shadow” a los mismos valores de la altura del documento y lo esconde. Por supuesto, queremos que este div sea visible sólo cuando hacemos clic en “lightSwitcher”. Ahora debemos añadir un administrador de clic para lightSwitcher (encendedor de luz):

$(".lightSwitcher").click(function(){
$(”#shadow”).toggle();
});

Si intentas utilizar esto ahora verás que funciona. LightSwitcher podrá activar y desactivar la visibilidad del div “shadow” y eso simulará el encendido y apagado de las luces. El único problema es que el propio link se encontrará en “la oscuridad” y no podrás hacer clic en el mismo nuevamente una vez que hayas apagado las luces.

La solución es simple: LightSwitcher tiene que tener z-index más alto que el div “shadow”. Para lograr esto, debemos posicionar el link de forma absoluta dentro de su container posicionado relativamente y programar z-index en 101:

#command { position:relative; height:25px; display:block;}
.lightSwitcher {position:absolute; z-index:101; background-image:url(light_bulb_off.png);
background-repeat:no-repeat; background-position:left; padding: 0 0 0 20px;
outline:none; text-decoration:none;}

Ahora sí funcionará. Si miras el demo notarás que mientras apagas las luces el texto del link y el ícono cambian. Para poder llevar a cabo esto es necesario extender nuestro CSS y jQuery un poquito. Cuando apagas las luces, la luz del icono de la bombilla y el texto cambian, y el color del link se vuelve amarillo. Necesitamos definir una clase CSS que le dará estilo al link y añadir algo de jQuery para cambiar el texto y activar esta clase CSS:

.turnedOff {color:#ffff00; background-image:url(light_bulb.png);}

Extenderemos el administrador de clic un poco para lograr este resultado:

$(".lightSwitcher").click(function(){
$(”#shadow”).toggle();
if ($(”#shadow”).is(”:hidden”))
$(this).html(”Turn off the lights”).removeClass(”turnedOff”);
else
$(this).html(”Turn on the lights”).addClass(”turnedOff”);
});

Ahora ya tenemos un interruptor de luz completamente funcional. Al final, el código completo lucirá de esta manera:

CSS

body {font-family:Arial, Sans-Serif; font-size:13px; text-align:center; margin:0px; position:relative;}
#container { width:960px; margin:0px auto; text-align:left; overflow:hidden; position:relative;}
#movie {border:solid 1px #dcdcdc; float:left; width:560px; text-align:left; margin-right:20px;}
#description { float:left; width:320px;border:solid 1px #dcdcdc; padding: 10px 20px;}
#command { position:relative; height:25px; display:block; margin: 25px 0 0 0;}
.lightSwitcher {position:absolute; z-index:101; background-image:url(light_bulb_off.png);
background-repeat:no-repeat; background-position:left; padding: 0 0 0 20px;
outline:none; text-decoration:none;}
.lightSwitcher:hover {text-decoration:underline;}
#shadow {background-image:url(shade1×1.png); position:absolute; left:0; top:0; width:100%; z-index:100;}
.turnedOff {color:#ffff00; background-image:url(light_bulb.png);}

jQuery

$(document).ready(function(){
$(”#shadow”).css(”height”, $(document).height()).hide();
$(”.lightSwitcher”).click(function(){
$(”#shadow”).toggle();
if ($(”#shadow”).is(”:hidden”))
$(this).html(”Turn off the lights”).removeClass(”turnedOff”);
else
$(this).html(”Turn on the lights”).addClass(”turnedOff”);
});
});

Haz clic aquí para ver un demo»

Haz clic aquí para descargar el código fuente »

Fuente: Janko at Warp Speed


0 comentarios to "Usa Jquery para “apagar las luces” al ver un video"

Publicar un comentario en la entrada

Blog Archivo

Subscribete via E-Mail

Subscribete via RSS!

Ingresa tu email para:
Recibe actualizaciones del Blog.

Etiquetas

16-bit 2.0 2012 256 colores 2d 3 404 5 8 acelerar Acer Aspire ActionScript ADD-ONS addon adobe adobe air Adsense aerogarden agilidad airbender AJAX alarma alien all your base alta definición Android angulacion answers API APIs aplicacion aplicaciones Apple apps archive Argentina ask atajo atajos de teclado ataque audio avance avatar aventura grafica back background backtweets balsamiq mockups banda bang banners barcelona barra lateral bases de datos Batacazo bateria bbcode bear bebé Biblioteca Virtual big bing BitDefender BitTorrent blekko Blog blogger bloggers blogósfera Blogs bocetos bollywood bordes botánica brickify brush buenos aires buscador búsqueda avanzada cache caja calendario calidad cámara web canciones Canvas carrusel catástrofe ceguera de banners celular CEO charla chpimunk chrome chrome web store chromium chuck norris cine Cisco cita cliente ftp cloud cluster Cms cocina codec código coleccion color colorotate columna comercio commodore 64 compatibilidad Competencia compositio Comscore comunicacion Comunidad comunidad online Conferencia configuración consejos contenido content copia correo correo electrónico cotidiano cpanel Creatividad criminal cross-browser cse CSS CSS3 cubo cuenta cuentos cultivo Curiosidades curso photoshop Cursos daisies date Debian degradé dell desaparecer desarrollo web descarga Descargas descomprimir desfragmentar despertador despertar deviantart DHTML Digg diseñador Diseño Diseño Grafico Diseño Gráfico diseño web Disney dispositivo dispositivos moviles dispositivos táctiles div dominio dramatic dropbox duck go e-book e-commerce e-commerce day e-mail EBE ecología editor educación a distancia educativo Educativos Niños efecto efectos ejemplo emblema emprendimiento emulador emuladores encabezados encuesta enlace episodios error escritura España estadística Estados Unidos estilo estudio etica evento Eventos Excel exportar extensión extensiones extraterrestre Facebook facebook connect garage fc64 feeds Fiberparty film Filosofía Firebug firefinder Firefox firmware fixes Flash flex 4 Flickr fondo fondos font font dragr form formularios foto Fotografía Framework freelance fuente fuentes future FXG g1 gadget gadgets games gaming gazelle geek gestion gestor de contenido gestos gestuales gesture ghajini gm730 Gmail Google google analytics google app Google Calendar Google Chrome Google Docs gradient gradiente gradientes gráfico gran torino gratis groupon guerra guia h.264 habla hack Hackers handle handler hardware herramientas gráficas hitchcock hollywood homepage horizontal hover HP html HTML válido HTML5 HTTP hub huerta IBM icono IE illustrator imagen Imagenes imágenes importar impress inclinacion indio infecciones info-box infografías iniciador Inkscape inspiracion interactivo interfaz Internet Internet Explorer interno invasión investigación iPhone iphone os iPod island istick IT iTunes U jackson JavaScript jerarquía jetpack jQuery jQuery TOOLS jsc64 juego Juegos lanzamiento laptop lego lenguaje Lenovo Lg libre librería libro limpieza Links Linux literatura lógica logo logos logotipo lolcat Lotería love luca lucasarts luces luminoso luz Mac mac book pro mac os x MacBook macro mago Malware manejo mantenimiento manual mapa mapeo maquetación marciano Marketing mascara mascota McBook medicion medio ambiente meme memoria mente menú metafilter metropolis michael microsoft Mobile Learning mockup monkey moonwalker mootools moousture motivacional motor de busqueda motores de búsqueda mouse mouseprobe mov movil mozilla Mozilla Firefox Mozilla Labs mp3 MS Office mujer maravilla multimedia MultiTouch música MXML MySpace MySql N97 napkee navegación Navegador navegadores networking New York nightly nihilogic no ser encontrado nodos Nokia notebook noticias Novedades ochentoso oferta offers oficial online Open Source Open SUSE OpenOffice opera operativo oportunidad optimización orden organizacion orgullo os oscurecer oscuridad oso Outlook oz page speed PageRank pagespeed pageviews panaderia Panda paneles pantalla pantallas táctiles parasitos PDF peekfeed película pencil peoplebrowsr perfil pestaña photoshop photoshop clase 2 PHP php 5 Picasa picker pinceles pingie piratas pirates plagio plantación plantar plantilla plastic logic Plugin plugins pocket yoga podcasts port portal portátil posicionamiento powerpoint ppc prejuicio preparacion presentación Productividad Programación programas promocion protofish prototype proyecto prueba PSD Psicología public Publicidad puerto QEMU quickoffice quicktime quote rafael jimenez rank Recursos Red red social reddit Redes sociales reloj remake reproductor reseña resolución respaldo resultado retro robo rojo RSS rubik Ruby rust Safari Salud sans-serif sclipo script sculpting sdk seleccionador SEO serie serif SERP server servidor servidor web set shadow share sherlock shortcodes shuffle sidebar sidepost simple simpson Sin clasificar sistema sistema operativo sistemas operativos sitios web slideshow smart smooth SMS snow leopard social sociedad Software Software educativo software libre sombra sonido soundmanager2 spam spreadsheet SQL Squeeze startup steps left store streaming subdominio success suckerfish sun microsystems tablas table tabs tactil Taller de Fotografía Digital Taller de Photoshop taller photoshop Talleres Tarjetas de Crédito teaser tecnica Tecnologia teddy telefono television telltale template templates textbox the theme Themes theora thumbnails tienda time tipografía tipografias tips titulares to touchscreen tower defense trailer transform transition tres Troyano Troyanos truco Trucos tutorial photoshop tutoriales TV tweet tweetstats Twitter unplugged Usabilidad USB usuarios Utilidades para PC Utilidades para tu web variables vector vegetales velocidad venta Ventas verde verdura version video videojuego videojuegos videos Videos de Música Peruana viernes Viernes Unplugged VirtualBox Virus Visas VMware voucher w3c wallpaper wallpapers web Web 2.0 web participativa webcam WebKit webm webmaker Wi-Fi widescreen Wikipedia Windows Windows 7 Windows Mobile wiz wizard wolfram wonder woman Word Wordpress WorldBuilder wwdc 09 XHTML yahoo Youtube yui zip