![]()
Hace unos dias que me estaba paseando por la web vi algunos menus muy atractivos visualmente pero que dejaban mucho que desear en la manera en la que se implemento el codigo, y eso que eran de esos menus de pago en las que te dan opciones de personalizacion y demas.
Bueno el que mas me llamo la atencion fue uno que tenia ese look estilo windows vista tan vistozo, pero por ningun lado encontre un tutorial para darle el look estilo vista, asi que me anime a hacerlo yo mismo y para ello use mi freworks para el diseño de las imagenes de fondo y el dreamweaver para el xhtml y el css auqnue pueden usar cualquier otro editor.
Ahora si manos a la obra :
Lo primero que hay que hacer es definir el html, en mi caso use un div para enmarcar todo el menu pero lo pueden hacer de otra forma si gustan, aunque tambien tendran que retocar un poquito el css
<div id="menu"> <ul> <li><a href="#"><span>Anchor Text</span></a></li> <li><a href="#"><span>Mas Anchor Text</span></a></li> <li><a href="#"><span>Super super anchor text</span></a></li> <li><a href="#"><span>Anchor Text</span></a></li> <li><a href="#"><span>Anchor</span></a></li> </ul> </div>
Ahora un poco de estilo a la estructura
#menu ul {
padding: 0px;
margin: 0px;
background: url(bgmenu.png) repeat-x;
font-size: 14px;
font-weight: bold;
width: 100%;
float: left;
font-family:"Trebuchet MS", Tahoma, Verdana, Helvetica, Arial;
}
Como se puede apreciar llamo a una imagen de fondo para el menu, la clasica barrita que ocupa todo el ancho del menu. Para esto ya habia preparado las imagenes a usar en éste menu :
![]()
la imagen de fondo bgmenu.png (300x34)px

y aqui la imagen a usar en los botones button.png (300x68)px
Descuiden que hay el tutorial de como crear botones estilo windows vista en fireworks
Bueno continuando con el menu ahora tenemos que hacer que los elementos <li> se muestren en linea
#menu ul li {
display: inline;
}
Ahora viene la parte mas entretenida, la de animar el menu con el efecto del rollover utilizando el pseudo-selector :hover del elemento <a>.
Primero debemos especificar las propiedades para el estado de reposo del boton
#menu ul li a:link, #menu ul li a:visited {
background: url(button.png) left top no-repeat;
color: #6FF;
padding-left:35px;
float: left;
text-decoration: none;
display:block;
margin:0 5px;
}
En este caso se va a usar una imagen para ambos estados (reposo y activo) y para los elementos <a> y <span>. He visto en otros tutoriales que suelen hacer el corte de la imagen para el <span> y el <a> pero a mi juicio no es recomendable ya que se hace la carga de dos imagenes al server y la suma de los kb de las imagenes generadas por lo general es mayor a si generasemos solo una y la aplicanos de forma correcta con css.
Como se puede apreciar he aplicado un padding-left de 35px ya que en el background estoy especificando que cuadre la imagen de la parte superior izquierda, para que el efecto uniforme del boton se mantenga debo tener en cuenta a partir de que punto se inicia la zona de repeticion de la imagen de fondo, en este caso este se da a los 30px de modo que el padding-left y padding-right no deben ser inferiores a estos valores porque de lo contrario se distinguiria el punto de corte por la falta de uniformidad de la imagen.
Ahora hacemos lo mismo por derecha con el <span>.
#menu ul li a span{
padding:5px 35px 5px 0;
line-height:24px;
display:block;
background: url(button.png) right top no-repeat;
}
Aplicamos un padding arriba y abajo de 5px, a la derecha 35px y a la izquierda cero, para que el padding top y bottom funcionen correctamente debemos definir el elemento como bloque y ya que el alto de la imagen es de 34px, aplicamos esos 24px faltantes al line-height y porsupuesto definimos el background a que se alinie desde arriba y por derecha evitando que se repita con un no-repeat.
Y ahora viene la decoracion del a:hover
#menu ul li a:hover, #menu ul li a:active{
color: #FFF;
background: url(button.png) left bottom no-repeat;
}
Aplicamos un color mas resaltante definimos el mismo fondo pero esta vez lo tomamos de la base, para este caso en particular debido a que hay solo dos estados basta con top y bottom, pero si se desea trabajar con mas estados siempre se puede definir el punto desde donde empezar a graficar el fondo.
Ahora hacemos lo respectivo con el <span>
#menu ul li a:hover span, #menu ul li a:active span{
background: url(button.png) right bottom no-repeat;
}
Aplicamos el mismo fondo pero lo tomamos de la base.
Ahora si ya podemos ver el resultado final, se pueden descargar el zip con todo desde aqui si gustan.
Bueno, a peticion de ustedes aqui les dejo el menu centrado, misma estructura html, y solo algunos retoques al css
Comentarios
javier (no verificado)
Mar, 04/03/2008 - 1:29pm
Permalink
problema con el menu
Estimado:
primero que nada agradecer este grandisimo tutorial, esta exelente.
Tengo el sgte. problema:
- Al poner el menu dentro de una tabla, este deja de verse de manera horizontal pasando a un estado vertical.
PD: esto solo pasa con Internet Explorer, ya que con mozilla no ningun problema.
se agradece de antemano cualquier tipo de ayuda.
ATTE Javier J.
randallnet
Mar, 04/03/2008 - 11:17pm
Permalink
Aplicar un ancho a la tabla podria ser tu solucion
Hola javier, habria sido bueno que agregaras el html de tu menu y tabla para poder brindarte una ayuda mas exacta, haciendo un test en IE6 y Firefox2 he podido notar que al encerrar el menu en una tabla en FF no hay mayores inconvenientes, pero en IE el ultimoitem del menu salta a la siguiente linea, a mi parecer esto se debe a que IE tratando de ajustar la tabla al contenido finalmente redondea sus calculos con unos pixeles de menos lo que obliga al ultimo item a saltar a la siguiente linea, pero esto se soluciona estableciendo un ancho fijo a la tabla, para el caso del ejemplo use un ancho de 900px y no hubo mayor problema, aunque te recomendaria que dejes de lado ya las tablas y apliques divs donde correponda.
Espero te haya servido de ayuda.
Anonimo (no verificado)
Mié, 02/04/2008 - 9:44am
Permalink
Sugerencia
Sería estupendo si hubiera una versión imprimible de tus tutoriales o se pudiera descargar en versión pdf
k3nj1n
Mié, 23/07/2008 - 6:19pm
Permalink
Esta excelente el tuto.
El tutorial esta excelente, ahora lo que veo es que con los Div no puedo hacerle el align=center, pues por cuestion de estetica quisiera ponerlo al centro del documento, entonces, estube pensando si con un tabla podria solucionar eso, aun mejor, seria posible generar el menu con una etiqueta , es decir, aplicar esto mismo pero en lugar de usar li y ul usar las etiketas table y td? no he querido hacer la prueba puesto a que me gusto como quedo el menu y quiero daniarlo jejeje...
conocetupc
Dom, 20/09/2009 - 1:25am
Permalink
Excelente Tutorial - Una Duda ???
Esta excelente tu trabajo, pero tengo solo una consulta
¿Porque usas la etiqueta span?
¿No funciona sin ella?
Grcias Vale
randallnet
Dom, 20/09/2009 - 4:11pm
Permalink
Uso la etiqueta span para
Uso la etiqueta span para poder generar un nivel mas dentro del link, ya que el fondo debe crecer por los dos lados, uso el tag "a" para uno de los lados y el tag "span" para el otro, ahora que esto mismo lo podrias conseguir usando el tag "li" y el "a", pero el problema surgiria al poner el mouse encima ya que IE6 solo reconoce el selector ":hover" para los links("a") siendo que al hacer hover sobre el boton se cambiaria solo un lado.
Espero haber despejado tus dudas.
Saludos.
Nayemi (no verificado)
Mié, 04/11/2009 - 10:13am
Permalink
menu estilo windows
Recién creé un blog y la plantilla presentaba un solo menu con "Home", "Post rss" y "comment Rss" (que no se aún para que sirven) y creé un nuevo menú, debajo del anterior, siguiendo las instrucciones y se ve muy bien. Ahora solo debo agregar los links. Sin embargo, quisiera desplegar un submenu, pero hay que ir poco a poco. Excelente tutorial, y agradecida
memoadian (no verificado)
Sáb, 06/03/2010 - 3:00pm
Permalink
Genial
Excelente, el tutorial, quedó perfecto, salvo pequeñas fallas mias. pero ya las arregle y quedó de lujo gracias capo. +click
AdWare (no verificado)
Dom, 24/10/2010 - 1:07pm
Permalink
Pregunta de Principiante!!
Hola!
Muy bueno el tutorial, tremendo me salio a la primera.
claro, como no, segui los pasos uno a uno, cambie las imagenes de los botones y me quedo como yo queria.
pero ahora tengo un problema de principiante, ya que lo soy.
no se como centrar este menu, y no se me ocurre, he probado con "position", "right", "left"... para ver si podia dejarlo en el centro pero ninguna me da resultado.
si alguien me ayuda, de antemano muchísimas gracias.
urijp (no verificado)
Lun, 14/02/2011 - 1:09pm
Permalink
Duda aún no resuelta
Yo también estoy intentando centrar los botones en mi barra de navegación pero no soy capaz, y veo que más gente tiene la misma duda. Aunque el tema tenga ya un tiempo, podrías dar una pequeña explicación de como hacerlo?
Muchas gracias.
Jose (no verificado)
Sáb, 19/02/2011 - 3:06pm
Permalink
Como centrar???
Pues yo tambien tengo la misma duda que algunos, como centrar el menu? lo he intentado de muchas formas y la verdad no he podido, ayuda!
randallnet
Mié, 02/03/2011 - 10:38am
Permalink
Para centrar el menu hay que
Para centrar el menu hay que hacer algunas modificaciones al css, facil en un rato hago una actualizacion de este post con los cambios para que se centre.
Ale!! (no verificado)
Jue, 08/09/2011 - 10:23pm
Permalink
como le hago para agregarle un submenu??????
hola!!! te agradeceria si me ayudas agregarle un submenu a estee plisssss!!! te lo agradeceria un buen jejejej.... y muy bonito menu ehh...
guillermo (no verificado)
Lun, 12/09/2011 - 4:48pm
Permalink
Excelente tuto
Podrias hecharme la mano con un menu que tengo , desde ya gracias ..
para eso me enviarias una direccion de mail para enviarte lo que tengo ...
Gracias
Marcos Sanchez (no verificado)
Jue, 22/09/2011 - 1:42pm
Permalink
Cambiar la Alineacion del Menu
Me uno a la peticion de los demas en donde queremos alinear el menu al centro o a la derecha, sin que este se vea afectado, de antemano muchas gracias...
Eddy (no verificado)
Vie, 23/09/2011 - 12:12pm
Permalink
Buen manual
felicitaciones buen manual
Añadir nuevo comentario