Foros del Web » Creando para Internet » CSS »

Submenú despliegue lento con css3

Estas en el tema de Submenú despliegue lento con css3 en el foro de CSS en Foros del Web. Hola amig@s! Tengo un menú con submenús, resulta que quiero hacer que cuando se esté por desplegar el submenú lo haga de una forma lenta, ...
  #1 (permalink)  
Antiguo 05/03/2012, 14:02
Avatar de novatoide  
Fecha de Ingreso: abril-2011
Mensajes: 171
Antigüedad: 13 años, 7 meses
Puntos: 13
Submenú despliegue lento con css3

Hola amig@s!

Tengo un menú con submenús, resulta que quiero hacer que cuando se esté por desplegar el submenú lo haga de una forma lenta, no así de repente, que se valla desplegando lento, ¿se entiende?, alguna idea

Abrazo.-
  #2 (permalink)  
Antiguo 05/03/2012, 14:18
Avatar de xFantaSx  
Fecha de Ingreso: agosto-2011
Mensajes: 243
Antigüedad: 13 años, 3 meses
Puntos: 20
Respuesta: Submenú despliegue lento con css3

Si lo que deseas es que el submenú aparezca de una altura menor a una altura mayor con una transición (para dar el efecto de abrir), entonces deberías tener una altura inicial para el submenú a partir de donde comenzará la transición y luego entonces una altura final que vendrá dada por el submenú con la pseudoclase :hover. De esta forma ya tienes el efecto de desplegar, ahora para hacer la transición tendrás que ponerle al :hover además de sus parámetros ya especificados una propiedad de transición:
que sería de esta forma:

Código CSS:
Ver original
  1. -moz-transition:0.1s;
  2.     -ms-transition:0.1s;
  3.     -o-transition:0.1s;
  4.     -webkit-transition:0.1s;
  5.     transition:0.1s;

El tiempo está dado en segundos y será el tiempo total que durará la transición desde el momento en que el botón esté hover hasta el tamaño final.

Si deseas que cuando se quite el puntero el menú se esconda de la misma forma, tendrías que poner esas mismas propiedades pero

Para más efectos, podrías consultar CSS transitions.
__________________
Aprende cómo ganar dinero en internet...o ganar dinero rapido?
  #3 (permalink)  
Antiguo 05/03/2012, 14:33
Avatar de novatoide  
Fecha de Ingreso: abril-2011
Mensajes: 171
Antigüedad: 13 años, 7 meses
Puntos: 13
Respuesta: Submenú despliegue lento con css3

Si, logre hacer el efecto que quiero con el transition, pero el problema es cuando me posiciono en el menú desplegable aparece de repente y mi idea es que tenga un efecto transición también pero no funciona mira:

LINK

Abrazo:.-
  #4 (permalink)  
Antiguo 05/03/2012, 15:01
Avatar de xFantaSx  
Fecha de Ingreso: agosto-2011
Mensajes: 243
Antigüedad: 13 años, 3 meses
Puntos: 20
Respuesta: Submenú despliegue lento con css3

Dime si este es el efecto que deseas.

Código HTML:
Ver original
  1. <html lang="es">
  2.     <meta charset="utf8" />
  3.     <title>Mi web</title>
  4.     <style type="text/css">
  5.     <!--
  6. * {padding:0; margin:0; border:0;}
  7. //p
  8. {
  9.     padding: 5px 250px;
  10.     margin: 10px;
  11.     background: #ff0030;
  12.     color: #fff;
  13.     font-size: 15px;
  14.     line-height: 1.3em;
  15.     border: 2px dashed #fff;
  16.     border-radius: 3px;
  17.     -moz-border-radius: 3px;
  18.     -webkit-border-radius: 3px;
  19.     -moz-box-shadow: 0 0 0 4px #ff0030, 2px 1px 4px 4px rgba(10,10,0,.5);
  20.     -webkit-box-shadow: 0 0 0 4px #ff0030, 2px 1px 4px 4px rgba(10,10,0,.5);
  21.     box-shadow: 0 0 0 4px #ff0030, 2px 1px 6px 4px rgba(10,10,0,.5);
  22.     text-shadow: -1px -1px #aa3030;
  23. }
  24. #contenedor
  25. {
  26.     overflow:hidden;
  27.     margin:10px auto 0px;
  28.     width:900px;
  29.     background:pink;
  30. }
  31.  
  32. .menu li
  33. {
  34.     margin:10px;
  35.     float:left;
  36.     padding:10px;
  37.     display:block;
  38.     background:black;
  39.     width:200px;
  40. }
  41. .menu
  42. {
  43.     height:100px;
  44. }
  45. .menu li:hover
  46. {
  47.     background:red;
  48.         -moz-transition: background 0.6s;
  49.         -moz-transition: background 0.6s;
  50.         -ms-transition: background 0.6s;
  51.         -o-transition: background 0.6s;
  52.         -webkit-transition: background 0.6s;
  53.         transition: background 0.6s;
  54. }
  55. .menu ul li ul
  56. {
  57.     /*display:none; /*Oculta submenu*/
  58.     //background:#cac99e;
  59.     position:absolute;
  60.     //padding:5px;
  61.     margin:10px -20px; /*Pocicion*/
  62.     .margin:69px -170px; /* hack pa ir */
  63.     _margin:69px -170px;
  64.     height:0px;
  65.     visibility: hidden;
  66. }
  67.  
  68. .menu ul li:hover ul
  69. {  
  70.     /*display:block;*/
  71.     height:250px;
  72.     visibility: visible;
  73.     overflow: hidden;
  74.     color:red;
  75.     -moz-transition: 0.4s;
  76.    -ms-transition: 0.5s;
  77.    -o-transition: 0.5s;
  78.    -webkit-transition: 0.5s;
  79.    transition:0.5s;
  80. }
  81. .menu ul li ul li
  82. {
  83.     margin:0px;
  84.     left:10px;
  85.     display:block;
  86.     float:none;
  87.     position:relative;
  88.     color:#fff;
  89.     //padding:0px;
  90.     line-height:30px;
  91.     background-color:black;
  92.  
  93. }
  94. .menu ul li ul li:hover
  95. {  
  96.     background-color:red;
  97.     -moz-transition: 0.4s;
  98.    -ms-transition: 0.5s;
  99.    -o-transition: 0.5s;
  100.    -webkit-transition: 0.5s;
  101.    transition:0.5s;
  102. }
  103.  
  104. .menu a
  105. {
  106.     text-decoration:none;
  107. }
  108.  
  109.  
  110. -->
  111.     </style>
  112. </head>
  113.  
  114. <div id="banner">s</div>
  115. <div id="contenedor">
  116.  
  117.     <div class="menu">
  118.             <ul>
  119.                 <a href="#">
  120.                 <li>Sobre...</li></a>
  121.                 <li>Navegarsdfsadf
  122.                     <ul>
  123.                         <a href="#"><li>LINK DINAMICOS</li></a>
  124.                         <a href="#"><li>LINK DINAMICOS</li></a>
  125.                         <a href="#"><li>LINK DINAMICOS</li></a>
  126.                         <a href="#"><li>LINK DINAMICOS</li></a>
  127.                         <a href="#"><li>LINK DINAMICOS</li></a>
  128.                     </ul>
  129.                 </li>
  130.             </ul>
  131.             <ul>
  132.                 <li><a href="#">Contacto</a></li>
  133.             </ul>
  134.     </div>
  135.  
  136.     <div id="contenido"> <!-- CONTENIDO -->
  137.         <p>HOla</p>
  138.  
  139.     </div> <!-- END CONTENIDO -->
  140.  
  141. </div> <!-- END CONTENEDOR -->
  142.  
  143. </body>
  144. </html>
__________________
Aprende cómo ganar dinero en internet...o ganar dinero rapido?
  #5 (permalink)  
Antiguo 05/03/2012, 15:07
Avatar de novatoide  
Fecha de Ingreso: abril-2011
Mensajes: 171
Antigüedad: 13 años, 7 meses
Puntos: 13
De acuerdo Respuesta: Submenú despliegue lento con css3

Cita:
Iniciado por xFantaSx Ver Mensaje
Dime si este es el efecto que deseas.

Código HTML:
Ver original
  1. <html lang="es">
  2.     <meta charset="utf8" />
  3.     <title>Mi web</title>
  4.     <style type="text/css">
  5.     <!--
  6. * {padding:0; margin:0; border:0;}
  7. //p
  8. {
  9.     padding: 5px 250px;
  10.     margin: 10px;
  11.     background: #ff0030;
  12.     color: #fff;
  13.     font-size: 15px;
  14.     line-height: 1.3em;
  15.     border: 2px dashed #fff;
  16.     border-radius: 3px;
  17.     -moz-border-radius: 3px;
  18.     -webkit-border-radius: 3px;
  19.     -moz-box-shadow: 0 0 0 4px #ff0030, 2px 1px 4px 4px rgba(10,10,0,.5);
  20.     -webkit-box-shadow: 0 0 0 4px #ff0030, 2px 1px 4px 4px rgba(10,10,0,.5);
  21.     box-shadow: 0 0 0 4px #ff0030, 2px 1px 6px 4px rgba(10,10,0,.5);
  22.     text-shadow: -1px -1px #aa3030;
  23. }
  24. #contenedor
  25. {
  26.     overflow:hidden;
  27.     margin:10px auto 0px;
  28.     width:900px;
  29.     background:pink;
  30. }
  31.  
  32. .menu li
  33. {
  34.     margin:10px;
  35.     float:left;
  36.     padding:10px;
  37.     display:block;
  38.     background:black;
  39.     width:200px;
  40. }
  41. .menu
  42. {
  43.     height:100px;
  44. }
  45. .menu li:hover
  46. {
  47.     background:red;
  48.         -moz-transition: background 0.6s;
  49.         -moz-transition: background 0.6s;
  50.         -ms-transition: background 0.6s;
  51.         -o-transition: background 0.6s;
  52.         -webkit-transition: background 0.6s;
  53.         transition: background 0.6s;
  54. }
  55. .menu ul li ul
  56. {
  57.     /*display:none; /*Oculta submenu*/
  58.     //background:#cac99e;
  59.     position:absolute;
  60.     //padding:5px;
  61.     margin:10px -20px; /*Pocicion*/
  62.     .margin:69px -170px; /* hack pa ir */
  63.     _margin:69px -170px;
  64.     height:0px;
  65.     visibility: hidden;
  66. }
  67.  
  68. .menu ul li:hover ul
  69. {  
  70.     /*display:block;*/
  71.     height:250px;
  72.     visibility: visible;
  73.     overflow: hidden;
  74.     color:red;
  75.     -moz-transition: 0.4s;
  76.    -ms-transition: 0.5s;
  77.    -o-transition: 0.5s;
  78.    -webkit-transition: 0.5s;
  79.    transition:0.5s;
  80. }
  81. .menu ul li ul li
  82. {
  83.     margin:0px;
  84.     left:10px;
  85.     display:block;
  86.     float:none;
  87.     position:relative;
  88.     color:#fff;
  89.     //padding:0px;
  90.     line-height:30px;
  91.     background-color:black;
  92.  
  93. }
  94. .menu ul li ul li:hover
  95. {  
  96.     background-color:red;
  97.     -moz-transition: 0.4s;
  98.    -ms-transition: 0.5s;
  99.    -o-transition: 0.5s;
  100.    -webkit-transition: 0.5s;
  101.    transition:0.5s;
  102. }
  103.  
  104. .menu a
  105. {
  106.     text-decoration:none;
  107. }
  108.  
  109.  
  110. -->
  111.     </style>
  112. </head>
  113.  
  114. <div id="banner">s</div>
  115. <div id="contenedor">
  116.  
  117.     <div class="menu">
  118.             <ul>
  119.                 <a href="#">
  120.                 <li>Sobre...</li></a>
  121.                 <li>Navegarsdfsadf
  122.                     <ul>
  123.                         <a href="#"><li>LINK DINAMICOS</li></a>
  124.                         <a href="#"><li>LINK DINAMICOS</li></a>
  125.                         <a href="#"><li>LINK DINAMICOS</li></a>
  126.                         <a href="#"><li>LINK DINAMICOS</li></a>
  127.                         <a href="#"><li>LINK DINAMICOS</li></a>
  128.                     </ul>
  129.                 </li>
  130.             </ul>
  131.             <ul>
  132.                 <li><a href="#">Contacto</a></li>
  133.             </ul>
  134.     </div>
  135.  
  136.     <div id="contenido"> <!-- CONTENIDO -->
  137.         <p>HOla</p>
  138.  
  139.     </div> <!-- END CONTENIDO -->
  140.  
  141. </div> <!-- END CONTENEDOR -->
  142.  
  143. </body>
  144. </html>
Si eso mismo bnusco bro!!! eres un genio! si me podrias explicar lo que hicistes te lo agradeceria un monton :D

Se que el carma no vale nada pero si pudiera te daria una abrazo de oso jajaja xD

Abrazo.-
  #6 (permalink)  
Antiguo 05/03/2012, 15:23
Avatar de xFantaSx  
Fecha de Ingreso: agosto-2011
Mensajes: 243
Antigüedad: 13 años, 3 meses
Puntos: 20
Respuesta: Submenú despliegue lento con css3

Pues todo está explicado en el primer mensaje que te dejé.
Inicialmente lo que tenías mal era que en tu transición estaba algo así:
Código CSS:
Ver original
  1. -moz-transition: height 0.6s ease-in-out, background-color 0.6s;
En ese caso sólo servía para un navegador, por esta razón debes activar el mismo efecto para cada navegador con las siguientes propiedades...
Código CSS:
Ver original
  1. -moz-transition:0.1s;
  2.     -ms-transition:0.1s;
  3.     -o-transition:0.1s;
  4.     -webkit-transition:0.1s;
  5.     transition:0.1s;

Igualmente esta regla, como la tenías, sólo iba a modificar el height, y como ves esta propiedad no está establecida en la regla:

Código CSS:
Ver original
  1. .menu li:hover
  2. {
  3.     background:red;
  4.     -moz-transition: height 0.6s ease-in-out, background-color 0.6s;
  5. }

En el caso de la transición de los colores era el mismo error.

Ahora para hacer el efecto de desplegar el menú como te dije, primero hay que especificar un alto al menú, en este caso lo apliqué a la regla: ".menu ul li ul" con un height:0px y visibility: hidden;.
luego la regla que lo hace visible es esta: ".menu ul li:hover ul", para esta el efecto de aparecer se hace con visibility: visible; y ahora va a tener una altura de 250px, o sea height:250px; y por último un overflow:hidden para que el contenido no se salga y la lista lo haga visible a medida que va apareciendo el menú, por último haces la transición:
Código CSS:
Ver original
  1. -moz-transition: 0.4s;
  2.     -ms-transition: 0.5s;
  3.     -o-transition: 0.5s;
  4.     -webkit-transition: 0.5s;
  5.     transition:0.5s;

Eso es todo.

Creo que además tenías una etiqueta ul sin cerrar, y otro error es que la etiqueta li debe contener los links y no los links a la etiqueta li.
__________________
Aprende cómo ganar dinero en internet...o ganar dinero rapido?
  #7 (permalink)  
Antiguo 05/03/2012, 15:32
Avatar de novatoide  
Fecha de Ingreso: abril-2011
Mensajes: 171
Antigüedad: 13 años, 7 meses
Puntos: 13
Respuesta: Submenú despliegue lento con css3

Sisis bro leí todo y lo entendí el código, no lograba darme cuenta lo del efecto, también sabía que está mal puesto el transition lo que pasa que lo arregle y no lo subí arreglado , no conocía la propiedad visibility + eso y el overflow está el efecto que estaba buscando :P eres un genio!

por el tema del <ul> mal cerrado, esta así porque en realidad contiene otro enlace, como el ultimo </li> cierra el sub menú no sabía cómo poner el botón de contactó en el último lugar, entonces opte por esa solución rápida que no me dio ningún problema . Por qué los link dinámicos eso ya va hacer parte de la programación del blog en phpoo que le estoy por realizar.

Jaja y los enlaces al revés del <li></li> lo puse así porque mi idea era que al tocar todo el botón se ingrese al hipervínculo y no tocando el texto solo xD
Abrazo.-
  #8 (permalink)  
Antiguo 05/03/2012, 15:40
Avatar de xFantaSx  
Fecha de Ingreso: agosto-2011
Mensajes: 243
Antigüedad: 13 años, 3 meses
Puntos: 20
Respuesta: Submenú despliegue lento con css3

Cita:
Iniciado por novatoide Ver Mensaje
Jaja y los enlaces al revés del <li></li> lo puse así porque mi idea era que al tocar todo el botón se ingrese al hipervínculo y no tocando el texto solo xD
Abrazo.-
En ese caso, para no hacer las cosas al revés...
simplemente deberías ponerle a los enlaces un display:block, para que de esta forma tomen todo el ancho del elemento de la lísta, ahora para que estos enlaces tomen el alto total de la lista sólo basta con poner un line-height: "altura del elemento", de esta forma quedará como es debido y tendrá el efecto necesario.
__________________
Aprende cómo ganar dinero en internet...o ganar dinero rapido?
  #9 (permalink)  
Antiguo 05/03/2012, 18:24
Avatar de novatoide  
Fecha de Ingreso: abril-2011
Mensajes: 171
Antigüedad: 13 años, 7 meses
Puntos: 13
De acuerdo Respuesta: Submenú despliegue lento con css3

GENIOOOOOOOOOOOOOO!!!! ahora quedo como tiene que quedar y en regla :P la parte del menú :D

Gracias broo!!! +1

Etiquetas: css3, despliegue, lento
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 19:10.