Foros del Web » Creando para Internet » CSS »

[SOLUCIONADO] Capa div superpuesta para menú

Estas en el tema de Capa div superpuesta para menú en el foro de CSS en Foros del Web. Hola a todos! Estoy haciendo una ventana para consultas en la que: 1) Tengo un div que engloba todo para ponerle el 100% de height ...
  #1 (permalink)  
Antiguo 11/04/2013, 02:55
 
Fecha de Ingreso: noviembre-2011
Mensajes: 117
Antigüedad: 12 años, 5 meses
Puntos: 2
Capa div superpuesta para menú

Hola a todos!

Estoy haciendo una ventana para consultas en la que:

1) Tengo un div que engloba todo para ponerle el 100% de height y width y dentro:
2) tengo un div izquierdo en el que quiero poner el menú de consultas
3) a la derecha de éste un div en el que se carga una tabla con los registros

entonces mi problema es que no consigo que el menú sea una capa que esté superpuesta al resto de div existentes para que cuando se despliegue salga bien y por encima de todo (No se si me entendereis lo que quiero decir)

este es mi html:

Código HTML:
<!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" />
<link href="cssInformes/menuIconos.css" rel="stylesheet" type="text/css" />
<title>Documento sin título</title>
</head>

<body>

<!------------------------------------DIV SUPERPUESTO----------------------------->
<div align="center" id="divSuperpuesto_" style="z-index:2; float:left; position: relative !important; margin-left:90px; margin-top:90px">
    <!------------------------------------MENU----------------------------->
    <div id="menu" style="border:1px solid #000; width:100%">
         <ul class="mi-menu">
          <li><a href="URL_enlace_1"> texto_enlace_1 </a></li>
          <li>
            <a href="#"> texto_enlace_2 </a>
            <ul>
              <li><a href="URL_enlace_2.1"> texto_submenú_2.1 </a></li>
              <li><a href="URL_enlace_2.2"> texto_submenú_2.2 </a></li>
              <li><a href="URL_enlace_2.3"> texto_submenú_2.3 </a></li>
            </ul>
          </li>
          <li><a href="URL_enlace_3"> texto_enlace_3 </a></li>
        </ul>
    </div>
    <!--------------------------------FIN MENU----------------------------->
</div>
<!------------------------------------FIN DIV SUPERPUESTO----------------------------->

<div style=" width:100%; height:100%; position:absolute">

    <div class="contTablas" style="height:90%; width:90%; text-align:center; margin:20px auto; overflow:hidden;">
        <!--------------------------------------DIV CONTENEDOR MENU-------------------------------------->
        <div id="contenedorBotones" style="float:left; clear:both; height:93%; margin:13px 0px 0px 15px; width:15%; "></div>
        <!----------------------------------FIN DIV CONTENEDOR MENU-------------------------------------->
        
    	<div style="box-shadow:0 0 0 3px #EEF5F7;float:left; height:94%; margin:15px 0px 0px 15px; width:78%;" >
          <div id="divBarra" class="barra" style="height:3%; width:100%;" ></div>
          <div id="divContenidoConsulta" style="margin-top:0; padding:0; height:84%; width:100%;overflow:auto;overflow-x:hidden;">	
          </div>
    	</div>
    </div>
</div>
</body>
</html> 
y mi CSS:

Código:
<style type="text/css">
html,body{
	/*margin:0px;*/
	height:100%; width:100%;
	overflow:hidden;
}

/*------------------DIV CONTENEDOR DE TABLAS-----------------*/
.contTablas{
	overflow:auto;
	overflow-x:hidden;
	border: 10px solid #EEF5F7; 
	border-radius: 6px; 
	background-color:#FFFFFF;
}

.barra{
	background: -moz-linear-gradient(top, #e4f1f6 0%, #cfe6ef 100%);
    background: -webkit-linear-gradient(top, #e4f1f6 0%,#cfe6ef 100%);
	filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#e4f1f6', EndColorStr='#cfe6ef'); 
	border: 1px solid #ACC8DD;
	padding-top:2px;
	}
	
#divSuperpuesto{
	border-radius: 6px;
	padding: 18px 18px 18px 18px;
	margin-top: 10px;
	box-shadow: 0px 5px 10px #B5C1C5, 0 0 0 10px #CCC inset;
	
	font-family: sans-serif;
	font-size: 12px;
	color: #798e94;
	
	border: 1px solid #CCC;
	margin: 0 auto;
	background-image:url(../imagenesModulo2/fondo_opacidad_blanco.png);
	cursor:move !important;
}

#menu {  
	text-align: center;
	font-size: 0.7em;
	width: 320px;
	margin: 20px;
}
#menu ul { 
	list-style-type: none;
}
#menu ul li.nivel1 { 
	width: 162px;
}
#menu ul li.primera { 
	border-top: solid 1px #FFF;
}
#menu ul li a {
	display: block;
	text-decoration: none;
	color: #fff;
	background-color: #399;
	border: solid 1px #fff;
	border-top: none;
	padding: 8px;
	position: relative;
}
#menu ul li:hover {
	position: relative;
	background-color: #6CC;
	color: #000;
}
#menu ul li a:hover, #menu ul li:hover a.nivel1 {
	background-color: #6CC;
	color: #000;
	position: relative;
}
#menu ul li a.nivel1 {
	display: block!important;
	display: none;
	position: relative;
}
#menu ul li ul {
	display: none;
}
#menu ul li a:hover ul, #menu ul li:hover ul {
	display: block;
	position: absolute;
	left: 161px;
	top:-1px!important;
	top: -31px;
}
#menu ul li ul li a {
	width: 160px;
	background-color: #6CC;
	color: #000;
}
#menu ul li ul li a:hover {
	position: relative;
	background-color: #399;
	color: #FFF;
}
table.falsa {
	border-collapse:collapse;
	border:0px;
	float: left;
	position: relative;
}</style>

(el estilo css del menú lo tengo de momento en la misma pagina porque asi me es mas facil ir cambiándole cosas, cuando lo tenga bien lo pondre en un .css )

Gracias de antemano :)
  #2 (permalink)  
Antiguo 11/04/2013, 03:18
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: Capa div superpuesta para menú

Ya que el menú sale antes que todo lo demás en el HTML, tendrás que indicar que esté por encima de los demás elementos. Así que tienes que indicarle un z-index. Dado que este sólo funciona en elementos con una posición distinta de estática, que es la que está por defecto, tienes que cambiar su posicionamiento también.

Código CSS:
Ver original
  1. #menu {
  2.   position: relative;
  3.   z-index: 100;
  4. }
  #3 (permalink)  
Antiguo 11/04/2013, 03:33
 
Fecha de Ingreso: noviembre-2011
Mensajes: 117
Antigüedad: 12 años, 5 meses
Puntos: 2
Respuesta: Capa div superpuesta para menú

Hola pzin! gracias por responder, pensé que como ya le había puesto z-index y posición relativa al div que contiene el menu no me hacia falta ponerselo al menu en si:

Código HTML:
<div align="center" id="divSuperpuesto_" style="z-index:10; float:left; position: relative !important; margin-left:90px; margin-top:90px"> 
he probado lo que me dices y es cierto que sale por encima pero mira te muestro una imagen:

Cuando hago hover por encima d eun elemento sus hijos me salen mucho más a la derecha no salen pegados al menú, es lo que no entiendo si toda la lista esta dentro del mismo div , supongo que es por las posicione srelativas y absolutas me he liado un poco
  #4 (permalink)  
Antiguo 11/04/2013, 03:47
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: Capa div superpuesta para menú

Pues tienes razón, si ya lo tienes en #divSuperpuesto_ no te hace falta hacerlo de nuevo. No vi que también había código embebido en el HTML. En principio lo tenías bien vaya.

Voy a echarle un vistazo a lo de los márgenes que comentabas al hacer hover.
  #5 (permalink)  
Antiguo 11/04/2013, 03:57
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: Capa div superpuesta para menú

Lo del margen ocurre por varias razones. Principalmente por el valor left y que no quitaste el padding que por defecto llevan las listas.

Si cambias esto:
Código CSS:
Ver original
  1. #menu ul li a:hover ul, #menu ul li:hover ul {
  2.   display: block;
  3.   position: absolute;
  4.   left: 161px;
  5.   top:-1px!important;
  6.   top: -31px;
  7. }

Por esto:
Código CSS:
Ver original
  1. #menu ul li:hover ul {
  2.   display: block;
  3.   position: absolute;
  4.   left: 100%;
  5.   top: 0;
  6.   padding: 0;
  7. }
Se pone todo en su lugar.

Modifiqué el selector porque no tiene mucho sentido cambiar las propiedades a la lista al pasar el ratón por encima de dos elementos, basta uno.
  #6 (permalink)  
Antiguo 11/04/2013, 04:05
 
Fecha de Ingreso: noviembre-2011
Mensajes: 117
Antigüedad: 12 años, 5 meses
Puntos: 2
Respuesta: Capa div superpuesta para menú

muchísimas gracias pzin!!! justo era eso ^^ claro estaba respetando el padding por defecto que dices al no quitarselo, ahora si que funciona


Pongo el código del menú y su css comentado ya que he estado revisándolo y le sobraban cosillas así mucho más facil de entender ^^ por si le sirve a alguien:

Código HTML:
Ver original
  1. <!------------------------------------MENU----------------------------->
  2.         <div id="menu" style="z-index:100;">
  3.              <ul>
  4.               <li class="nivel1"><a href="URL_enlace_1"> texto_enlace_1 </a></li>
  5.               <li class="nivel1">
  6.                 <a href="#"> texto_enlace_2 </a>
  7.                 <ul>
  8.                   <li><a href="URL_enlace_2.1"> texto_submenú_2.1 </a></li>
  9.                   <li><a href="URL_enlace_2.2"> texto_submenú_2.2 </a></li>
  10.                   <li><a href="URL_enlace_2.3"> texto_submenú_2.3 </a></li>
  11.                 </ul>
  12.               </li>
  13.               <li class="nivel1"><a href="URL_enlace_3"> texto_enlace_3 </a></li>
  14.             </ul>
  15.         </div>
  16.         <!--------------------------------FIN MENU----------------------------->


Código CSS:
Ver original
  1. /*-----------------DIV MENU QUE CONTIENE LA LISTA----------------*/
  2. #menu {  
  3.     text-align: center;
  4.     font-size: 0.7em;
  5.     width: 320px;
  6.     position: relative;
  7.     margin:0px;
  8. }
  9.  
  10. /*-----------------QUITAMOS LOS PUNTITOS QUE TIENEN POR DEFECTO LAS LISTAS----------------*/
  11. #menu ul {
  12.     list-style-type: none;
  13. }
  14.  
  15. /*-----------------NIVEL 1, POR DEFECTO WIDTH----------------*/
  16. #menu ul li.nivel1 {
  17.     width: 162px;
  18. }
  19.  
  20. /*-----------------NIVEL 1, POR DEFECTO ----------------*/
  21. #menu ul li a {
  22.     display: block;
  23.     text-decoration: none;
  24.     color: #fff;
  25.     background-color: #399;
  26.     border: solid 1px #fff;
  27.     border-top: none;
  28.     padding: 8px;
  29.     position: relative;
  30. }
  31.  
  32. /*-----------------HOVER DE NIVEL 1: POSICIÓN----------------*/
  33. #menu ul li:hover {
  34.     position: relative;
  35. }
  36.  
  37. /*-----------------HOVER DE NIVEL 1: POSICIÓN, COLOR FUENTE Y COLOR DE FONDO----------------*/
  38. #menu ul li a:hover{ /*, #menu ul li:hover a.nivel1 */
  39.     background-color: #6CC;
  40.     color: #000;
  41.     position: relative;
  42. }
  43.  
  44. /*-----------------OCULTAMOS POR DEFECTO EL NIVEL 2 (PARA QUE SE MUESTRE SOLO CON HOVER DE NIVEL 1)---------------*/
  45. #menu ul li ul {
  46.     display: none;
  47. }
  48.  
  49. /*-----------------HOVER DE NIVEL 1: ANCHURA,COLOR FUENTE Y COLOR----------------*/
  50. #menu ul li:hover ul { /*#menu ul li a:hover ul, */
  51.     display: block;     /* para sustituirlo por el display:none que tiene actualmente el nivel 2*/
  52.     position: absolute; /* CLAVE PARA MOSTRAR EL NIVEL 2 CORRECTAMENTE*/
  53.     left: 100%;         /* CLAVE PARA MOSTRAR EL NIVEL 2 CORRECTAMENTE*/
  54.     top:0;              /* CLAVE PARA MOSTRAR EL NIVEL 2 CORRECTAMENTE*/
  55.     padding:0;          /* CLAVE PARA MOSTRAR EL NIVEL 2 CORRECTAMENTE*/
  56. }
  57. /*-----------------ANCHURA,COLOR FUENTE Y COLOR DE FONDO DE LNIVEL 2----------------*/
  58. #menu ul li ul li a {
  59.     width: 160px;
  60.     background-color: #6CC;
  61.     color: #000;
  62. }
  63. /*-----------------HOVER DE NIVEL 2: COLOR FUENTE Y COLOR DE FONDO----------------*/
  64. #menu ul li ul li a:hover {
  65.     position: relative;
  66.     background-color: #399;
  67.     color: #FFF;
  68. }

Última edición por eamanesims; 11/04/2013 a las 05:21

Etiquetas: divs, estilo, hover, html, imagenes
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:09.