Esto es sólo el inicio. Conviertete en un Profesional del Frontend y domina HTML5, CSS3 y Javascript.
En este tutorial haremos un menu desplegable con HTML5 y CSS3. Una de las buenas cosas de olvidarnos de IE6, es que podemos crear simples menús desplegables, sin necesidad de usar Javascript, ya que el selector ":hover" funciona en todos los elementos.
Estructura del "index.html":
Código :
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Menú Desplegable Vertical y CSS3</title> <link rel="stylesheet" type="text/css" href="style.css" /> <!--[if lt IE 9]> <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> </head> <body> <nav> <li class="parent"><a href="#">Cristalab</a> <ul> <li><a href="#">Blogs</a></li> <li><a href="#">Foros</a></li> <li><a href="#">Tutoriales</a></li> <li ><a href="#">Cursos</a></li> </ul> </li> <li><a href="#">Mejorando.la</a></li> <li><a href="#">L4C</a></li> <li class="parent"><a href="#">Mas de Cristalab</a> <ul> <li><a href="#">Publica un tutorial</a></li> <li><a href="#">¿Qué es Cristalab?</a></li> <li><a href="#">Anime</a></li> </ul> </li> </nav> </body> </html>
Hasta aquí, todo esta muy claro, pero si tienes alguna duda puedes visitar la Introducción a HTML5.
Ahora el CSS2, no necesitas nada del 3 por ahora. Todo es igual a construir un menú común y corriente, pero pon atención al final.
"style.css"
Código :
body{ font-size: 25px; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; } nav{ width:300px; margin: 5% auto; background: #EEE; } nav li{ list-style: none; position:relative; /* importante, para que el submenu tome la posición correcta*/ } nav li a{ color:#666; text-decoration:none; padding: 5px; display:block; } nav li a:hover{ color:#08D; } nav li.parent:hover{ border:1px #ccc solid; margin:-1px; background:#F8F8F8; } nav li li a{ width:250px;/*el ancho de los links del submenu, debe ser fijo, esto servirá para crear la animación mas adelante */ display:block; } /* aquí esta lo importante!! */ nav li ul { width: 250px; margin:0; display:none; background:#F8F8F8; border:1px #ccc solid; position: absolute; left: 100%; top:-1px; } nav li:hover ul { display: block; }
El truco es muy fácil, basta con crear un submenu en la forma hover, para luego desaparecerlo con display:none; . Y con ayuda del selector :hover volverlo a aparecer. Muy fácil!!!
Y por último agregamos una animación con CSS3, esta parte es la confusa.
Código :
nav li ul { width: 0; /*Cambiamos la linea */ margin:0; /*display:none; Lo Eliminamos */ background:#F8F8F8; border:1px #ccc solid; position: absolute; left: 100%; top:-1px; overflow:hidden; /* Para evitar Que se salgan los links */ z-index:-1;/*El Submenu tiene que ir atras, para evitar que los 0 pixeles causen problema al :hover*/ opacity: 0; filter: alpha(opacity=0); /* Internet Explorer*/ -webkit-transition: opacity 0.2s ease-in 0.3s, width 0.4s ease-in 0.3s;/* Chrome, Safari*/ transition: opacity 0.2s ease-in 0.3s, width 0.4s ease-in 0.3s;/* Navegadores CSS3 */ -moz-transition: opacity 0.2s ease-in 0.3s, width 0.4s ease-in 0.3s; /* Firefox 4 */ -o-transition: opacity 0.2s ease-in 0.3s, width 0.4s ease-in 0.3s; /*Opera */ } nav li:hover ul { /*display:block; Lo Eliminamos */ width: 250px; /*La animación de 0 a 250px*/ opacity: 1; filter: alpha(opacity=100);/* Internet Explorer*/ -webkit-transition: opacity 0.1s linear 0s, width 0.3s ease-out 0s;/* Chrome, Safari*/ transition: opacity 0.1s linear 0s, width 0.3s ease-out 0s;/* Navegadores CSS3 */ -moz-transition: opacity 0.1s linear 0s, width 0.3s ease-out 0s; /* Firefox 4 */ -o-transition: oopacity 0.1s linear 0s, width 0.3s ease-out 0s; /* Opera */ }
Explico la propiedad transition
- opacity la propiedad a la que le deseo realizar la transición.
- 0.2s el tiempo que tarda la animación.
- ease-in especifica la curva de la velocidad del efecto.
- 0.3s el número de segundos de espera antes de que el efecto se inicie.
Demo
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por carlosssasd el 29 de Diciembre de 2011
Por Manuel el 29 de Diciembre de 2011
Por Manuel el 29 de Diciembre de 2011
Por The Fricky! el 29 de Diciembre de 2011
Por Alivan el 29 de Diciembre de 2011
Por Alivan el 29 de Diciembre de 2011
Por alexandra el 30 de Diciembre de 2011
Por gcm el 30 de Diciembre de 2011
Código :
Gracias The Fricky!, por la observación, espero la tomen en cuenta todos...
Osea que la etiqueta nav solo es para reemplazar el div que colocaríamos, hmmm es que yo acostumbraba hacerlo con un <ul id="menu">
Por The Fricky! el 30 de Diciembre de 2011
Entiendo tu confusión porque yo suelo hacer lo mismo, pero de esta manera, <nav> no se limita a que tenga que ser una lista de enlaces y sigue siendo semántica.
Por manuel el 31 de Diciembre de 2011
Por samuraiweb el 05 de Enero de 2012
Por kiko_fredy el 10 de Enero de 2012
Es que apenas empiezo a involucrarme en este mundo del html y me pierdo facilito
y si quiero el menú horizontal y que el deplegable se abra hacia abajo y no hacia el lado ¿como hago?
Espero que la pregunta no sea demasiado tonta. ¡Gracias!
Por kiko_fredy el 10 de Febrero de 2012
Por gcm el 15 de Febrero de 2012
kiko_fredy :
Hola Kiko_fredy.
Hacerlo horizontal, es un tema aparte, te recomiendo que te leas un poco mas de CSS.
Un día de estos saco tiempo y hago la segunda parte del tuto.
Por Isaac el 13 de Julio de 2012
¿Como es para que los submenus queden alineados a la izquierda en vez de en medio y darles padding como el menu? Gracias!!!
Por el 24 de Julio de 2012
Por chespiro el 11 de Septiembre de 2012
Por Pablo10 el 25 de Septiembre de 2012
Por criticon el 04 de Octubre de 2012
Por cesc1989 el 23 de Noviembre de 2012
Por Jesueto el 16 de Mayo de 2013
Por juanfran el 23 de Mayo de 2013
Por JS el 04 de Junio de 2013
Por bdtique el 05 de Septiembre de 2013
Por Linton el 15 de Noviembre de 2013
Por lauura el 04 de Marzo de 2014
Por walter el 31 de Marzo de 2014
Por alberto el 27 de Abril de 2014
Por supersuper el 08 de Febrero de 2015
Por Gema el 28 de Marzo de 2015
palaciodeverano.tk (en la pestaña Menú). También os hago un enlace desde la pestaña "Diseño", espero que no os importe, si es así, lo suprimiría o lo modificaría conforme me indiquéis.
Gracias otra vez!
Por pepe el 16 de Abril de 2015
Gracias.
Por veronica el 03 de Junio de 2015
Por Carlos el 12 de Agosto de 2016
Por Nick Endo el 14 de Octubre de 2018
Por solisarg el 15 de Octubre de 2018
Saludos !