Crear un menu usando elementos DIV y CSS

Generalmente la creación de menús horizontales en páginas web se realizan mediante listas (ul,ol) o mediante el uso de DIV, en algún otro momento chuyrdz ya expuso detalladamente cómo se realiza la creación de un menu (ul) desde cero.

Ahora mostraré los elementos mínimos para la creación de un menú horizontal usando solamente DIV y darle la funcionalidad necesaria sin uso de JavaScript para lograr la funcionalidad.

A partir de este código mostrado tendrán la posibilidad de personalizarlo de acuerdo al diseño que se seleccione.

La estructura en HTML es la siguiente:

<div class=”Menu”>
    <div><a href=”#”>inicio</a></div>
    <div><a href=”google.com.mx”>Google</a></div>
    <div><a href=”wordpress.com”>Word Press</a></div>
    <div>
            <a href=”#”>Correos</a>
            <div class=”SubMenu”>
                <div><a href=”gmail.com”>google</a></div>
                <div><a href=”hotmail.com”>hotmail</a></div>
                <div><a href=”yahoo.com”>yahoo</a></div>
            </div>
    </div>
    <div>
           <a href=”#”>Enlaces</a>
          <div class=”SubMenu”>
               <div><a href=”www.google.com.mx”>google</a></div>
               <div><a href=”hotmail.com”>hotmail</a></div>
                <div><a href=”yahoo.com”>yahoo</a></div>
           </div>
    </div>
</div>

La estructura de estos elementos es la siguiente:

div (menu)
    – div
            -a
    – div
            -a
    – div
            -a
            -div (submenu)
                    -div
                          -a
                    -div
                          -a
                    -div
                          -a
    – div
            -a
            -div (submenu)
                    -div
                          -a
                    -div
                          -a
                    -div
                          -a

La estructura anterior muestra los elementos principales del menú que contienen submenú, en este caso, se ejemplificará para los dos últimos elementos, sin embargo si los dos primeros elementos tuvieran submenú, solo tendría que seguirse la estructura especificada y la funcionalidad se aplicará sin realizar ninguna modificación.

Ahora, para que esta estructura tenga la funcionalidad mínima de mostrar los submenús cuando el mouse esté arriba de la opción se deberá especificar el siguiente código como parte de los estilos.

/*establecemos el alto del menú*/
.Menu

{
height:30px; 
}

/*flotamos los div que son hijos directos del div que tiene como clase Menu*/
.Menu > div
{
float:left;
}

/*se indica que los enlaces ocupen todo el espacio del DIV donde están contenidos, se les da un espacio de separación interior entre el texto y el borde (padding)*/
.Menu a
{
display:block;
padding:5px 15px 5px 15px;
}

/*se establece la funcionalidad del enlace al colocar el mouse arriba del enlace*/
.Menu a:hover
{
background-color:gray;
}

/*Se establecen las características iniciales del submenú, el cual no debe mostrarse*/
.SubMenu
{
position:absolute;
visibility:hidden;
display:none;
}

/*Se establece la funcionalidad del submenu cuando el mouse esté arriba de la opción de menu*/
.Menu > div:hover .SubMenu
{
display:block;
visibility:visible;
}

Hasta el momento se tiene solamente funcionalidad, sin embargo este código está listo para adaptarle cualquier diseño de colores, contornos, estilos de letra y demás monerías  a los elementos estáticos o dinámicos.

Saludos