Hoy les vamos a enseñar cómo crear un sorprendente menú de navegación con solapas desplegables para sus sitios web, mediante CSS y jQuery.
La navegación estará casi totalmente oculta, los Ãtems sólo se deslizarán hacia afuera cuando el usuario pase el mouse sobre el área cercano a ellos, algo similar a un Ãndice telefónico, valiéndonos del efecto slide() de jQuery.
Antes de comenzar, aquà tienen una demo del efecto para que tengan una idea de cómo va a quedar
La estructura HTML
Lo único que necesitaremos para la navegación es una simple lista no ordenada con links dentro de cada Ãtem.
-
<ul id="navigation">
-
</ul>
La lista obtiene una ID porque debemos hacer referencia a ella luego en el JavaScript. Con jQuery, haremos que los links se deslicen fuera cuando pasemos el mouse sobre los elementos li de la lista.
El CSS
Primero, definimos las propiedades CSS para los elementos de la lista:
-
ul#navigation {
-
position: fixed;
-
margin: 0px;
-
padding: 0px;
-
top: 10px;
-
left: 0px;
-
list-style: none;
-
z-index:9999;
-
}
La navegación siempre deberÃa ser accesible para el usuario, incluso aunque haga scroll down de la página. Por lo que la posición deberÃa ser fija. El margin y padding están seteados en 0, debido a que la lista desordenada tiene valores por defecto para ellos. La navegación deberÃa estar en la parte superior de todos los otros elementos de la página. Es por eso que hemos seteado el z-index muy alto.
Ahora veamos las propiedades de los elementos de la lista:
-
ul#navigation li {
-
width: 100px;
-
}
Para los links de los elementos de la lista, definimos las siguientes propiedades CSS:
-
ul#navigation li a {
-
display: block;
-
margin-left: -85px;
-
width: 100px;
-
height: 70px;
-
background-color:#CFCFCF;
-
background-repeat:no-repeat;
-
background-position:center center;
-
border:1px solid #AFAFAF;
-
}
El margen izquierdo está programado en un valor negativo para esconder la mayor parte del icono y sólo revelarla cuando pasamos el mouse sobre la lista de Ãtems. Básicamente, estamos empujando el elemento link a la izquierda, fuera del área visible de la página.
En el Javascript definiremos una función que hace que los elementos se desplacen hacia afuera. Pero primero vamos a añadir esquinas redondeadas a ellos (a pesar de que esto no funcione en Internet Explorer):
-
ul#navigation li a {
-
display: block;
-
margin-left: -85px;
-
width: 100px;
-
height: 70px;
-
background-color:#CFCFCF;
-
background-repeat:no-repeat;
-
background-position:center center;
-
border:1px solid #AFAFAF;
-
-moz-border-radius:0px 10px 10px 0px;
-
-webkit-border-bottom-right-radius: 10px;
-
-webkit-border-top-right-radius: 10px;
-
-khtml-border-bottom-right-radius: 10px;
-
-khtml-border-top-right-radius: 10px;
-
}
Para que luzcan bien, añadiremos opacidad, y asà el contenido de abajo será visible:
-
ul#navigation li a {
-
display: block;
-
margin-left: -85px;
-
width: 100px;
-
height: 70px;
-
background-color:#CFCFCF;
-
background-repeat:no-repeat;
-
background-position:center center;
-
border:1px solid #AFAFAF;
-
-moz-border-radius:0px 10px 10px 0px;
-
-webkit-border-bottom-right-radius: 10px;
-
-webkit-border-top-right-radius: 10px;
-
-khtml-border-bottom-right-radius: 10px;
-
-khtml-border-top-right-radius: 10px;
-
opacity: 0.6;
-
filter:progid:DXImageTransform.Microsoft.Alpha(opacity=60);
-
}
La última propiedad filtro hará que esto funcione para Internet Explorer también.
Estas fueron las propiedades comunes de todos los elementos de la lista. Ahora, definimos el fondo de la imagen para los links en la lista de Ãtems especÃfica:
-
ul#navigation .home a{
-
background-image: url(../images/home.png);
-
}
-
ul#navigation .about a {
-
background-image: url(../images/id_card.png);
-
}
-
ul#navigation .search a {
-
background-image: url(../images/search.png);
-
}
-
ul#navigation .podcasts a {
-
background-image: url(../images/ipod.png);
-
}
-
ul#navigation .rssfeed a {
-
background-image: url(../images/rss.png);
-
}
-
ul#navigation .photos a {
-
background-image: url(../images/camera.png);
-
}
-
ul#navigation .contact a {
-
background-image: url(../images/mail.png);
-
}
Y eso es toda la parte del CSS.
El Javascript
Usando jQuery, haremos que los iconos aparezcan siempre que pasemos el mouse sobre uno de los elementos de la lista. Recuerden, la lista de items posee un ancho de 100 pÃxeles, sólo el elemento link está siendo empujado fuera de la página hacia la izquierda, por lo que no es visible.
Definimos la siguiente función (antes de que finalice la etiqueta body) que se ejecuta siempre que pasamos el mouse sobre un li:
-
$(function() {
-
$('#navigation> li').hover(
-
function () {
-
$('a',$(this)).stop().animate({'marginLeft':'-2px'},200);
-
},
-
function () {
-
$('a',$(this)).stop().animate({'marginLeft':'-85px'},200);
-
}
-
);
-
});
Por lo que, al hacer hover, deseamos especificar que el elemento link tenga un margen izquierdo de -2 pÃxeles, y que eso sea animado de forma bonita y no demasiado lento (200 milisegundos). Mover el mouse fuera deberÃa poner el elemento link nuevamente en su posición anterior (-85 pÃxeles). La función stop() detiene todas las animaciones que estén andando sobre los elementos especificados, lo que brinda el bonito efecto cuando, por ejemplo, se pasa con el mouse sobre todos los elementos muy rápido.
Lo que serÃa realmente genial, es hacer al usuario consciente de que existe una navegación tan sorprendente en la página. Por lo que serÃa bueno mostrar brevemente la navegación cuando la página carga. Asà que dejaremos que inicialmente la navegación sea visible. Para eso cambiamos el margen izquierdo de los elementos link:
-
ul#navigation li a {
-
display: block;
-
margin-left: -2px;
-
width: 100px;
-
height: 70px;
-
background-color:#CFCFCF;
-
background-repeat:no-repeat;
-
background-position:center center;
-
border:1px solid #AFAFAF;
-
-moz-border-radius:0px 10px 10px 0px;
-
-webkit-border-bottom-right-radius: 10px;
-
-webkit-border-top-right-radius: 10px;
-
-khtml-border-bottom-right-radius: 10px;
-
-khtml-border-top-right-radius: 10px;
-
opacity: 0.6;
-
filter:progid:DXImageTransform.Microsoft.Alpha(opacity=60);
-
}
Y añadimos la siguiente lÃnea al comienzo de la función JavaScript:
-
$(function() {
-
-
$('#navigation a').stop().animate({'marginLeft':'-85px'},1000);
-
-
$('#navigation> li').hover(
-
function () {
-
$('a',$(this)).stop().animate({'marginLeft':'-2px'},200);
-
},
-
function () {
-
$('a',$(this)).stop().animate({'marginLeft':'-85px'},200);
-
}
-
);
-
});
Con esa lÃnea definimos que deberÃa tomar 1 segundo darle un margen izquierdo de -85 pÃxeles a todos los elementos link de la lista. A través del margen que programamos mostraremos la navegación al usuario y con el JavaScript luego la ocultaremos.
¡Y listo!
Si eres fanático de las sombras, también puedes añadir estas lÃneas en el CSS de los elementos link:
-
ul#navigation li a {
-
display: block;
-
margin-left: -2px;
-
width: 100px;
-
height: 70px;
-
background-color:#CFCFCF;
-
background-repeat:no-repeat;
-
background-position:center center;
-
border:1px solid #AFAFAF;
-
-moz-border-radius:0px 10px 10px 0px;
-
-webkit-border-bottom-right-radius: 10px;
-
-webkit-border-top-right-radius: 10px;
-
-khtml-border-bottom-right-radius: 10px;
-
-khtml-border-top-right-radius: 10px;
-
-moz-box-shadow: 0px 4px 3px #000;
-
-webkit-box-shadow: 0px 4px 3px #000;
-
}
Añadiendo la caja de sombra y removiendo la opacidad, les dará a los Ãtems de la navegación un aspecto 3D. Dejar la opacidad, los hará ver genial también, prueben y disfruten.
Fuente: Codrops








Viernes, 17 de Diciembre de 2010 a las 14.13
gracias por conpartir, la demo genial, seguro use esto en algun proyecto
Sábado, 18 de Diciembre de 2010 a las 17.18
Me parece genial esta enseñanza, es algo que estaba buscando. El problema es que soy un alumno de parvulos y para mÃ, falta que se indique en qué parte del css va el código. Solo veo la indicación que el Javascript va antes de body.
Si me lo dicen regenial, si no, mantengo igualmente mi agradecimiento y gratitud por todo el contenido.
Lunes, 7 de Febrero de 2011 a las 20.07
sencillamente genial es increible el efecto que le da a la navegación del menú lateral.
Miércoles, 20 de Abril de 2011 a las 15.36
Hola micaela, gracias a tu tutorial, he implementado este menú en blog de blogger, donde he creado un tutorial/a>
para implementar este menú en un blog de la plataforma blogger. Un saludo!
Martes, 3 de Mayo de 2011 a las 03.37
Fabuloso este menu, tengo un problema solo me carga la primera imagen de todos los elementos del menu! no se que pasa favor ayuda