Translate-Traducir

Mostrando entradas con la etiqueta Menu desplegable html css. Mostrar todas las entradas
Mostrando entradas con la etiqueta Menu desplegable html css. Mostrar todas las entradas

19/6/16

Menu desplegable html Css

Menu desplegable html y css sin JavaScript

En este post crearemos un menu desplegable con html y Css.
Un menu desplegable con html no es mas que el uso de listas una dentro de otras
osea listas anidadas y es el css el que da el efecto de menu desplegable.
Css.-Es un lenguaje usado para web  que crea y da estilo a las  fuentes, listas ,encabezados etc ...
Este ejemplo lo he hecho con colores vistosos para su mejor compresión.
Aqui un ejemplo de listas anidadas en html sin css .
Su codigo en html seria el siguiente:

<body>
<div id="contenedor">
<ul class="menu">
     <li><a href="apart">Apartado A </a> </li>  <!--primer nivel-->
    
     <li><a href="apre"> Apartado B </a> <!--primer nivel-->
           <ul>
                 <li> <a href="primero"> Primero </a> </li><!--Segundo nivel-->
                 <li><a href="segundo">Segundo </a></li>
                 <li><a href="tercero"> Tercero </a> 
                   <ul>
                     <li> <a href="cuarto">Cuarto </a> </li><!--tercer nivel-->
                     <li><a href="quinto">Quinto </a></li>
                     <li><a href="sexto">Sexto </a>
                           <ul>
                               <li> <a href="Septimo">Septimo </a> </li><!--cuarto nivel-->
                                <li><a href="Octavo">Octavo </a></li>
                           </ul>
                                           
                    </li>
                   </ul>
                  </li>
                
           </ul>
     </li>
      <li> <a href="apartadoc">Apartado C </a></li><!--primer nivel-->
      <li> <a href="apartadod">Apartado D </a>
           <ul>         
                 <li> <a href="f">despues </a> </li>
                 <li> <a href="r"> entrada </a></li>
                 <li> <a href="f"> salida </a>  </li>
           </ul>
     </li>
     <li> <a href="apartadoe"> Apartado E </a> </li>
</ul>
</div>
</body>

Como vemos el codigo de arriba hay un <div> tambien tenemos <ul class="menu"> esto lo usaremos en el codigo Css tambien cabe destacar que el codigo esta comentado y vemos   primer ,segundo tercer y cuarto nivel  nos enfocaremos en estos niveles para programar nuestro Css.
La hoja de estilo  o Css se puede hacerse separado en otro documento y guardarlos con la extension Css o en el mismo html en el head  dentro de la etiqueta <Style>
Este seria nuestro codigo Css:

*{
list-style:none;/*Aqui digo que para todas las listas no se muestren  viñetas ni decoracion*/
margin:0px;
text-decoration:none;
}
#contenedor{ 
text-align:center;  
margin:50px;
background-color:blue;
border-radius:15px;
box-shadow: 12px 12px 3px #888888;

}
.menu{
font-family:Comic Sans MS;
display:inline-block;
}
/*Primer Nivel------------------------------------------------------------------------------*/
.menu li{
float:left; /*para que todos los menus del primer nivel  se vean en horizontal*/
box-shadow:0px 0px 1px 0px;

}
.menu li a{ /*para que todas las cajas con etiqueta "a" ya sean de (1,2,3,4 nivel)tengan un alto y un ancho */
background-color:green;
color:white;
width:200px;
height:40px;
display:block;

}
.menu li a:hover{ /*para cuando pase el mouse por la etiqueta "a" cambie de color la caja*/
background-color:yellow;
color:red;
}
/*Segundo nivel-----------------------------------------------------------------------------*/
.menu li ul{ 
visibility:hidden;/* Aqui para que todos los submenus osea (segundo tercer y cuarto nivel)  esten ocultos    */
position:absolute;/* Aqui para que todos los submenus no ocupen todo el ancho y alto del contenedor   */
padding:0px;           
}

.menu li:hover >ul{
visibility:visible; /*para cuando pase el mouse por los "ul" se vean todos los submenus*/

}
.menu li ul li {
 float:none;     /*para que el menu del segundo nivel se abra en vertical*/
}
/*Tercer nivel-----------------------------------------------------------------------------*/
.menu li ul li ul {
right:-200px;/*para que el menu del tercer nivel  se desplegue a la derecha*/
top:80px;  /*Esto es para que  la caja no se vea abajo acuerdense que la caja tiene de alto 40px por eso ponemos 80px*/
}
/*Cuarto nivel*-----------------------------------------------------------------------------*/
.menu li ul li ul li ul {
top:80px;
left:-200px;/*para que se desplegue a la izquierda*/
right:200px;/*para que no se vea la caja por que el de arriba le afecta*/

}

Y este seria nuestro resultado html y Css
menu desplegable
Menu desplegable














El codigo completo seria :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Menu</title>
<style type="text/css">
*{
list-style:none;/*Aqui digo que para todas las listas no se muestren  viñetas ni decoracion*/
margin:0px;
text-decoration:none;
}
#contenedor{ 
text-align:center;  
margin:50px;
background-color:blue;
border-radius:15px;
box-shadow: 12px 12px 3px #888888;

}
.menu{
font-family:Comic Sans MS;
display:inline-block;
}
/*Primer Nivel------------------------------------------------------------------------------*/
.menu li{
float:left; /*para que todos los menus del primer nivel  se vean en horizontal*/
box-shadow:0px 0px 1px 0px;

}
.menu li a{ /*para que todas las cajas con etiqueta "a" ya sean de (1,2,3,4 nivel)tengan un alto y un ancho */
background-color:green;
color:white;
width:200px;
height:40px;
display:block;

}
.menu li a:hover{ /*para cuando pase el mouse por la etiqueta "a" cambie de color la caja*/
background-color:yellow;
color:red;
}
/*Segundo nivel-----------------------------------------------------------------------------*/
.menu li ul{ 
visibility:hidden;/* Aqui para que todos los submenus osea (segundo tercer y cuarto nivel)  esten ocultos    */
position:absolute;/* Aqui para que todos los submenus no ocupen todo el ancho y alto del contenedor   */
padding:0px;           
}

.menu li:hover >ul{
visibility:visible; /*para cuando pase el mouse por los "ul" se vean todos los submenus*/

}
.menu li ul li {
 float:none;     /*para que el menu de segundo nivel  se abra en vertical*/
}
/*Tercer nivel-----------------------------------------------------------------------------*/
.menu li ul li ul {
right:-200px;/*para que el menu del tercer nivel se desplegue a la derecha*/
top:80px;  /*Esto es para que  la caja no se vea abajo acuerdense que la caja tiene de alto 40px por eso ponemos 80px*/
}
/*Cuarto nivel*-----------------------------------------------------------------------------*/
.menu li ul li ul li ul {
top:80px;
left:-200px;/*para que se desplegue a la izquierda*/
right:200px;/*para que no se vea la caja por que el de arriba le afecta*/

}

</style>
</head>

<body>
<div id="contenedor">
<ul class="menu">
     <li><a href="apart">Apartado A </a> </li>  <!--primer nivel-->
    
     <li><a href="apre"> Apartado B </a> <!--primer nivel-->
           <ul>
                 <li> <a href="primero"> Primero </a> </li><!--Segundo nivel-->
                 <li><a href="segundo">Segundo </a></li>
                 <li><a href="tercero"> Tercero </a> 
                   <ul>
                     <li> <a href="cuarto">Cuarto </a> </li><!--tercer nivel-->
                     <li><a href="quinto">Quinto </a></li>
                     <li><a href="sexto">Sexto </a>
                           <ul>
                               <li> <a href="Septimo">Septimo </a> </li><!--cuarto nivel-->
                                <li><a href="Octavo">Octavo </a></li>
                           </ul>
                                           
                    </li>
                   </ul>
                  </li>
                
           </ul>
     </li>
      <li> <a href="apartadoc">Apartado C </a></li><!--primer nivel-->
      <li> <a href="apartadod">Apartado D </a>
           <ul>         
                 <li> <a href="f">despues </a> </li>
                 <li> <a href="r"> entrada </a></li>
                 <li> <a href="f"> salida </a>  </li>
           </ul>
     </li>
     <li> <a href="apartadoe"> Apartado E </a> </li>
</ul>
</div>
</body>
</html>

Bueno espero que les sea de ayuda y empiecen a jugar con el Css este código se puede mejorar esto es solo un ejemplo de como usar Css