Foros del Web » Creando para Internet » CSS »

[SOLUCIONADO] ¿Cómo puedo pegar completamente a la izquierda una lista desplegable?

Estas en el tema de ¿Cómo puedo pegar completamente a la izquierda una lista desplegable? en el foro de CSS en Foros del Web. Muy Buenas! Estoy creando un menú para una web donde el objetivo es que al pasar el ratón sobre los apartados (:hover) justo debajo de ...
  #1 (permalink)  
Antiguo 27/12/2013, 10:11
Avatar de matheus_rostenkowski  
Fecha de Ingreso: junio-2013
Mensajes: 16
Antigüedad: 10 años, 10 meses
Puntos: 0
¿Cómo puedo pegar completamente a la izquierda una lista desplegable?

Muy Buenas! Estoy creando un menú para una web donde el objetivo es que al pasar el ratón sobre los apartados (:hover) justo debajo de los mismos se lea la palabra en un tamaño mayor. Hasta aquí todo bien, el problema que tengo es que cada "sublista" (cada palabra) me sale justo debajo de su botón padre, y mi objetivo es que estas se me peguen completamente a la izquierda de la pantalla.

Este es mi código html:

<nav id="menu_bar">
<ul id="main_menu">
<li class="main_button"><a href="">Novedades</a>
<ul>
<li class="bottom_nov">Novedades</li>
</ul>
</li>
<li class="main_button"><a href="">Quienes somos</a>
<ul>
<li class="bottom_qui">Quienes somos</li>
</ul>
</li>
<li class="main_button"><a href="">Colabora</a>
<ul>
<li class="bottom_col">Colabora</li>
</ul>
</li>
<li class="main_button" id="desp_menu"><a href="">Numeros</a>
<ul>
<li class="bottom_num">Numeros anteriores</li>
</ul>
</li>
</ul>
</nav>


Y este el CSS

nav{
margin:0 auto;
font-family:bold 'Roboto Condensed', sans-serif;
font-size:1em;
}

nav > ul > li{
list-style: none;
display: inline-block;
position:relative;
margin-top:1.563em;
margin-right:1.563em;
margin-bottom:1.563em;
}

nav > ul > li > a{
color:inherit;
font-weight:bold;
text-decoration:none;

}

nav > ul > li > a:hover{
background-color:#FF0;
}


nav li ul{
position:absolute;
list-style:none;
text-align:left;

max-height:0px;
overflow:hidden;

-webkit-transition:max-height 0.2s linear;
-moz-transition:max-height 0.2s linear;
transition:max-height 0.2s linear;
}

nav li:hover ul{
overflow:visible;

}

nav li ul li{
font-size:120px;
font-weight:900;
margin-top:25px;
}

nav li ul .bottom_qui{
margin-left:-1em;
}

nav li ul .bottom_col{
margin-left:-2em;
}

nav li ul .bottom_num{
margin-left:-3em;
}


Como podeis comprobar, he probado a restar de forma gradual (-1em, -2em, etc..) y a priori funciona, el problema es que la web pretende ser fluida y al reducir la ventana se me salen de cuadro.

Espero no haberme extendido mucho ;) Gracias de antemano.
  #2 (permalink)  
Antiguo 27/12/2013, 12:12
Avatar de C2am  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 2.005
Antigüedad: 15 años, 3 meses
Puntos: 306
Respuesta: ¿Cómo puedo pegar completamente a la izquierda una lista desplegable?

Hola
Bueno, la teoría indica que al tener posicionado en forma absoluta tu sublista (ul li ul), bastaría con fijarle a tu nav o elemento ancestro a la lista primaria la posicion:relative y quitarle esa propiedad a los items ul li.
La idea es que la sublista tome como referencia el elemento ancestro que fluirá, y de este modo se acomodará en la posición que deseas.

Ejemplo:
http://jsfiddle.net/c2am/5KZk2/9/embedded/result/

Código HTML:
Ver original
  1. <nav id="menu_bar">
  2. <ul id="main_menu">
  3. <li class="main_button"><a href="">Novedades</a>
  4. <ul>
  5. <li class="bottom_nov">Novedades</li>
  6. </ul>
  7. </li>
  8. <li class="main_button"><a href="">Quienes somos</a>
  9. <ul>
  10. <li class="bottom_qui">Quienes somos</li>
  11. </ul>
  12. </li>
  13. <li class="main_button"><a href="">Colabora</a>
  14. <ul>
  15. <li class="bottom_col">Colabora</li>
  16. </ul>
  17. </li>
  18. <li class="main_button" id="desp_menu"><a href="">Numeros</a>
  19. <ul>
  20. <li class="bottom_num">Numeros anteriores</li>
  21. </ul>
  22. </li>
  23. </ul>
  24. </nav>

Código CSS:
Ver original
  1. nav{
  2. margin:0 auto;
  3. font-family:bold 'Roboto Condensed', sans-serif;
  4. font-size:1em;
  5.     background:#f5d8e4;
  6.     position:relative;
  7. }
  8.  
  9. nav > ul > li{
  10. list-style: none;
  11. display: inline-block;
  12.  
  13. margin-top:1.563em;
  14. margin-left:1.563em;
  15. margin-bottom:1.563em;
  16. }
  17.  
  18. nav > ul > li > a{
  19. color:inherit;
  20. font-weight:bold;
  21. text-decoration:none;
  22.  
  23. }
  24.  
  25. nav > ul > li > a:hover{
  26. background-color:#FF0;
  27. }
  28.  
  29.  
  30. nav li ul{
  31. position:absolute;
  32. list-style:none;
  33. text-align:left;
  34. left:0px;
  35. max-height:0px;
  36. overflow:hidden;
  37.  
  38. -webkit-transition:max-height 0.2s linear;
  39. -moz-transition:max-height 0.2s linear;
  40. transition:max-height 0.2s linear;
  41. }
  42.  
  43. nav li:hover ul{
  44. overflow:visible;
  45.  
  46. }
  47.  
  48. nav li ul li{
  49. font-size:120px;
  50. font-weight:900;
  51. margin-top:25px;
  52.     margin-left:0;
  53. }

Saludos
__________________
El mundo nada puede contra un hombre que canta en la miseria.
-- Ernesto Sábato--
  #3 (permalink)  
Antiguo 27/12/2013, 14:17
Avatar de matheus_rostenkowski  
Fecha de Ingreso: junio-2013
Mensajes: 16
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: ¿Cómo puedo pegar completamente a la izquierda una lista desplegable?

C2 am, Grande!!
Un millón de gracias amigo!!

Ahora veo el problema bien claro.


Etiquetas: desplegable, diseño-web, html5, listas
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 20:31.