Write less, es la idea de jQuery. Usando este framework para Javascript puedes lograr resultados vistosos y mejorar la usabilidad de tu web. En este caso vamos a hacer un menú desplegable usando jQuery, que se abra cuando lo «sobrevolemos» con el ratón. Mi primera experiencia con menús desplegables fue en una empresa (no diré cual, no queda bien hablar mal de los jefes) que querían un menú desplegable en la página (era un menú de sólo dos opciones, por lo que no le veía mucho sentido a hacerlo así, pero eran paranoias del jefe).
Lo primero es descargar jQuery desde su página oficial e incluirlo en la cabecera de la página. Luego insertar el marcado html del menú tal que así:
<ul class="dropdown">
<li class="active">Listado: <span>Ejemplos</span></li>
<li class="first"><a href="#">Ej 1</a></li>
<li><a href="#">Ej 2</a></li>
<li><a href="#">Ej 3</a></li>
<li class="last"><a href="#">Ej...</a></li>
</ul>
En fin, lo siguiente son los estilos del menú, el css. En el marcado ya dimos a la lista la clase dropdown, lo que nos simplificará mucho ahora el aplicar estilos en el css.
ul.dropdown{
width: 250px;
border: 1px double #000;
border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
background: #1a1a1a;
margin-top: 2em;
}
ul.dropdown li{
display: none;
font-size: 12px;
}
ul.dropdown li.active{
display: block;
color: #8c8c8c;
font-size: 14px;
padding: 12px;
color: #555;
border-top: 1px solid #313131;
border-radius: 4px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
}
ul.dropdown li.active span{
padding-right: 24px;
color: #8c8c8c;
}
ul.dropdown li a{
display: block;
text-decoration: none;
padding: 8px 8px 8px 10px;
background: #1e1e1e;
border-bottom: 1px solid #171717;
}
ul.dropdown li.last a{
border:0;
}
ul.dropdown li.first a{
border-top: 3px solid #131313;
}
ul.dropdown li a:hover{
background: #232323;
color: #fff;
padding-left: 11px;
}
Marcado listo, estilos listos. Falta sólo la funcionalidad, el código javascript que haga furrular todo esto. De momento toda la lista está oculta menos el elemento de la clase active, por lo que tenemos que hacer que se muestre el resto cuando pasemos el ratón por encima, desaparezca cuando lo saquemos y además sea un código reutilizable. Aquí tenemos el procedimiento:
//variable global para almacenar el menú
var menu = $("ul.dropdown");
//captura de eventos
$(this.document).ready(function(){
menu.mouseover(function(){
mostrar($(this).find("li"));
});
menu.mouseout(function(){
ocultar($(this));
});
})
//función que muestra los elementos del menú
function mostrar(e){
e.show();
}
//función que los oculta
function ocultar(e){
e.find("li").hide();
e.find("li.active").show();
}
Y con esto ya tienes un menú desplegable chulo chulo que poner en tu web.