Foros del Web » Creando para Internet » CSS »

[SOLUCIONADO] Hacer menú responsive a partir de estilos

Estas en el tema de Hacer menú responsive a partir de estilos en el foro de CSS en Foros del Web. Buenos días Tengo este menú: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código CSS: Ver original #navbar {     width : 95% ;     height : auto ; ...
  #1 (permalink)  
Antiguo 05/05/2015, 07:18
Avatar de ceaped  
Fecha de Ingreso: febrero-2004
Mensajes: 2.185
Antigüedad: 20 años, 2 meses
Puntos: 9
Pregunta Hacer menú responsive a partir de estilos

Buenos días
Tengo este menú:

Código CSS:
Ver original
  1. #navbar {
  2.     width: 95%;
  3.     height: auto;
  4.     list-style: none;
  5.     margin: 12px 0 0 2%;
  6.     border: none;
  7.     }
  8.  
  9. #navbar a {
  10.     font-size: 1em;
  11.     letter-spacing: 0.05em;
  12. }
  13.  
  14. #main {
  15.     display: inline-block;
  16.     margin: -20px auto 0 auto;
  17.     padding: 0 auto 15px auto;
  18. }
  19.  
  20. #breadcrumb a:hover {  
  21.     color: #BE171E;
  22. }
  23.  
  24.  
  25. ul.menu {
  26.     width: 100%;
  27.     height: auto;  
  28.     margin: 0 auto 10px auto;  
  29.     background-color: #D8D0B9;
  30.     list-style: none;
  31.    
  32.     /* Sombra */
  33.     -webkit-box-shadow: 0px 0px 0px 0px rgba(0,0,0,0.0);
  34.     -moz-box-shadow: 0px 0px 0px 0px rgba(0,0,0,0.0);
  35.     box-shadow: 0px 0px 0px 0px rgba(0,0,0,0.0);
  36.     }
  37.  
  38. ul.menu li {
  39.     font-family: 'Merriweather', serif;
  40.     color: #FF0000;
  41.     text-align: center;
  42.     line-height: 45px;
  43.     width: auto;
  44.     height: auto;
  45.     display: block;
  46.     padding: 0;
  47.     }
  48.  
  49. ul.menu li.current {
  50.     font-weight: bold;
  51.     }
  52.  
  53. ul.menu a {
  54.     font-family: 'Merriweather', serif;
  55.     font-size: 1.2em;
  56.     text-align: center;
  57.     color: #023568;
  58.     line-height: 50px;
  59.     text-decoration: none;
  60.     text-transform: none;
  61.     width: 100%;
  62.     height: 50px;
  63.     padding-left: 10px;
  64.     padding-right: 10px;
  65.     display: inline-block;
  66.     background-color: transparent;
  67. }
  68.  
  69. ul.menu a:hover {
  70.     color: #FFFFFF;
  71.     height: 50px !important;
  72.     background-color: #023568;
  73.    
  74.     /* Borde redondeados */
  75.     border-radius: 0px 0px 0px 0px;
  76. }
  77.  
  78. ul.steplist {
  79.     margin: 0;
  80.     padding: 0;
  81.     list-style-type: decimal;
  82. }
  83.  
  84. ul.steplist li {
  85.     margin: 0;
  86.     padding: 0;
  87.     font-size: 0.85em;
  88.     padding-right: 0.5em;
  89.     display: inline;
  90.     text-transform: uppercase;
  91. }
  92.  
  93. ul.steplist li.current {
  94.     font-weight: bold;
  95. }
  96.  
  97. ul.steplist a {
  98.     text-decoration: none;
  99. }
  100.  
  101. ul.plain {
  102.     list-style-type: none;
  103.     padding-left: 1.5em;
  104. }

Deseo convertir en responsive (que se oculte y expanda).
Dese se a partir de estos .css ya que es un sistema CMS que solo me permite trabajar con los estilos dados por el sistema.

Gracias por su ayuda
__________________
Diseñador Gráfico publicitario
  #2 (permalink)  
Antiguo 05/05/2015, 08:09
Avatar de fede5426  
Fecha de Ingreso: diciembre-2014
Ubicación: Córdoba
Mensajes: 446
Antigüedad: 9 años, 4 meses
Puntos: 208
Respuesta: Hacer menú responsive a partir de estilos

Y cual es tu duda?
  #3 (permalink)  
Antiguo 05/05/2015, 08:23
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 7 meses
Puntos: 145
Respuesta: Hacer menú responsive a partir de estilos

Cita:
Iniciado por fede5426 Ver Mensaje
Y cual es tu duda?
Ninguna, quiere el trabajo hecho
__________________
¿Te sirvió la respuesta? Deja un +1
  #4 (permalink)  
Antiguo 05/05/2015, 08:28
Avatar de ceaped  
Fecha de Ingreso: febrero-2004
Mensajes: 2.185
Antigüedad: 20 años, 2 meses
Puntos: 9
Respuesta: Hacer menú responsive a partir de estilos

Hola NueveReinas
No no lo mires así. No quiero formar un debate a partir de esto.
Sólo que debo volver un menú responsive a partir de unos estilos preestablecidos.
Si me pueden ayudar les estaré agradecido.

Gracias por su ayuda
__________________
Diseñador Gráfico publicitario
  #5 (permalink)  
Antiguo 05/05/2015, 08:44
Avatar de fede5426  
Fecha de Ingreso: diciembre-2014
Ubicación: Córdoba
Mensajes: 446
Antigüedad: 9 años, 4 meses
Puntos: 208
Respuesta: Hacer menú responsive a partir de estilos

Tendrías que hacerlo con media queries y javascript/jquery.

Señalale con @media la forma y/o posición que querés que tome cada elemento según el ancho del dispositivo. Por ejemplo, cuando sea para moviles lo ocultas poniéndole posición absoluta y un left de -100%, eso lo va a ocultar a la izquierda, después con jquery indicas que al presionar un botón (que también debería aparecer usando un media query) se anime ese "left" hasta el valor "0" y asi vas obtener que aparezca desde la izquierda.

Es un ejemplo rápido y muy poco detallado, pero te puede ayudar a darte una idea.

De todas formas, si estas usando un CMS y la web todavía no esta en funcionamiento, existen muchas plantillas responsive que podes usar. Y según tengo entendido son completamente personalizables.
  #6 (permalink)  
Antiguo 05/05/2015, 09:03
Avatar de ceaped  
Fecha de Ingreso: febrero-2004
Mensajes: 2.185
Antigüedad: 20 años, 2 meses
Puntos: 9
Respuesta: Hacer menú responsive a partir de estilos

Hola fede5426
Mira es un OJS.
El asunto es que esta plataforma ya viene con unos estilos preestablecidos (nombre, div, id)
Yo a partir de ahí deseo ocultar ese menú.
Si yo utilizo los "@media" pero no se cómo ocultar (contraer) en menú cuando sea responsive.
(adaptar cada id, class, ul, li) que tiene este menú.

Código CSS:
Ver original
  1. @media screen and (min-width: 240px) {
  2. #navbar {
  3.     propiedades...
  4.     }
  5.  
  6. #navbar a {
  7.     propiedades...
  8. }
  9.  
  10. #main {
  11.     propiedades...
  12. }
  13.  
  14. #breadcrumb a:hover {  
  15.     propiedades...;
  16. }
  17.  
  18.  
  19. ul.menu {
  20.     propiedades...
  21.     }
  22.  
  23. ul.menu li {
  24.     propiedades...
  25.     }
  26.  
  27. ul.menu li.current {
  28.     font-weight: bold;
  29.     }
  30.  
  31. ul.menu a {
  32.     propiedades...
  33. }
  34.  
  35. ul.menu a:hover {
  36.     propiedades...
  37. }
  38.  
  39. ul.steplist {
  40.     propiedades...
  41. }
  42.  
  43. ul.steplist li {
  44.     propiedades...
  45. }
  46.  
  47. ul.steplist li.current {
  48.     propiedades...
  49. }
  50.  
  51. ul.steplist a {
  52.     propiedades...
  53. }
  54.  
  55. ul.plain {
  56.     propiedades...
  57. }
  58.  
  59. }

Gracias por tu ayuda
__________________
Diseñador Gráfico publicitario
  #7 (permalink)  
Antiguo 05/05/2015, 09:34
Avatar de fede5426  
Fecha de Ingreso: diciembre-2014
Ubicación: Córdoba
Mensajes: 446
Antigüedad: 9 años, 4 meses
Puntos: 208
Respuesta: Hacer menú responsive a partir de estilos

Y el código HTML cuál seria?
  #8 (permalink)  
Antiguo 05/05/2015, 09:43
Avatar de ceaped  
Fecha de Ingreso: febrero-2004
Mensajes: 2.185
Antigüedad: 20 años, 2 meses
Puntos: 9
Respuesta: Hacer menú responsive a partir de estilos

Hola fede5426
Ese es el asunto.
Aunque te puedo mostrar el HTML (.php) no se puede modificar, se tiene que trabajar con esas divs. No se puede insertar ni id, class ni nada al HTML pues es un sistema que te permite dar estilos pero a partir de las divs dadas por el sistema que en este caso es el .css que pongo.

Gracias por tu ayuda
__________________
Diseñador Gráfico publicitario
  #9 (permalink)  
Antiguo 05/05/2015, 09:50
Avatar de fede5426  
Fecha de Ingreso: diciembre-2014
Ubicación: Córdoba
Mensajes: 446
Antigüedad: 9 años, 4 meses
Puntos: 208
Respuesta: Hacer menú responsive a partir de estilos

Cita:
Iniciado por ceaped Ver Mensaje
Hola fede5426
Ese es el asunto.
Aunque te puedo mostrar el HTML (.php) no se puede modificar, se tiene que trabajar con esas divs. No se puede insertar ni id, class ni nada al HTML pues es un sistema que te permite dar estilos pero a partir de las divs dadas por el sistema que en este caso es el .css que pongo.

Gracias por tu ayuda
Eso ya lo tenia entendido, pero cómo puedo ayudarte si no se a que elemento apunta cada clase/id.. Por eso pregunto cuál es el código HTML
  #10 (permalink)  
Antiguo 05/05/2015, 10:13
Avatar de ceaped  
Fecha de Ingreso: febrero-2004
Mensajes: 2.185
Antigüedad: 20 años, 2 meses
Puntos: 9
Respuesta: Hacer menú responsive a partir de estilos

Hola fede5426
Mira el .css que puse al inicio todos los id y class se llaman como están nombradas en el HTML
(Así esta construido el menú).

Gracias por tu ayuda
__________________
Diseñador Gráfico publicitario
  #11 (permalink)  
Antiguo 05/05/2015, 10:32
Avatar de fede5426  
Fecha de Ingreso: diciembre-2014
Ubicación: Córdoba
Mensajes: 446
Antigüedad: 9 años, 4 meses
Puntos: 208
Respuesta: Hacer menú responsive a partir de estilos

Si eso ya lo entiendo ceaped pero si no se a que elemento están asignados no se a cuál modifica cada identificador. Los elementos en tu HTML pueden estar dispuestos de diferentes formas. Pega el html en un mensaje para ver si puedo ayudarte sino no puedo hacer nada.
  #12 (permalink)  
Antiguo 05/05/2015, 13:26
Avatar de ceaped  
Fecha de Ingreso: febrero-2004
Mensajes: 2.185
Antigüedad: 20 años, 2 meses
Puntos: 9
Respuesta: Hacer menú responsive a partir de estilos

Hola fede5426

Esta es el HTML

Código HTML:
Ver original
  1. <div id="navbar">
  2. <ul class="menu">
  3. <li><a href="#">Botón 1</a></li>
  4. <li><a href="#">Botón 2</a></li>
  5. <li><a href="#">Botón 3</a></li>
  6. <li><a href="#">Botón 4</a></li>
  7. <li><a href="#">Botón 5</a></li>
  8. </ul>
  9. </div>

Gracias por tu ayuda
__________________
Diseñador Gráfico publicitario
  #13 (permalink)  
Antiguo 05/05/2015, 19:49
Avatar de fede5426  
Fecha de Ingreso: diciembre-2014
Ubicación: Córdoba
Mensajes: 446
Antigüedad: 9 años, 4 meses
Puntos: 208
Respuesta: Hacer menú responsive a partir de estilos

Hay cosas a las que no les encuentro el sentido en ese código.

Te dejo un ejemplo de cómo haría un menú que se oculta en móviles y aparece con un botón, pero viendo que no podes editar el html, dudo que puedas hacerlo también porque necesitarías agregar el icono de menú, o en su defecto un botón/enlace con la palabra "Menú".

Código HTML:
Ver original
  1. <div id="navbar">
  2.   <div class="icon-menu">
  3.     <img src="http://i59.tinypic.com/dz9hc1.png" />
  4.   </div>
  5.   <ul class="menu">
  6.     <li><a href="#">Botón 1</a></li>
  7.     <li><a href="#">Botón 2</a></li>
  8.     <li><a href="#">Botón 3</a></li>
  9.     <li><a href="#">Botón 4</a></li>
  10.     <li><a href="#">Botón 5</a></li>
  11.   </ul>
  12. </div>

Código CSS:
Ver original
  1. #navbar {
  2.     width: 100%;
  3.     list-style: none;
  4.     border: none;
  5.     }
  6.  
  7. ul.menu {
  8.    width:100%;
  9.     background-color: #D8D0B9;
  10.     padding:0;
  11.     }
  12.  
  13. ul.menu li {
  14.     text-align: center;
  15.     line-height: 45px;
  16.     display: block;
  17.     }
  18.  
  19. ul.menu a {
  20.     font-size: 1.2em;
  21.     color: #023568;
  22.     text-decoration: none;
  23.     width: 100%;
  24.     height: 50px;
  25.     display:block;
  26. }
  27.  
  28. ul.menu a:hover {
  29.     color: #FFFFFF;
  30.     background-color: #023568;
  31. }
  32.  
  33. .icon-menu{
  34.   display:none;
  35.   cursor:pointer;
  36. }
  37.  
  38. @media screen and (max-width: 320px) {
  39.  
  40.   .menu{
  41.     position:absolute;
  42.     top:55px;
  43.     left:-100%;
  44.   }
  45.  
  46.   .icon-menu{
  47.     display:block;
  48.   }
  49.  
  50. }

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.   var contador = 1;
  3.   $(".icon-menu").click(function(){
  4.             if(contador == 1){
  5.                 $('.menu').animate({"left": "0"});
  6.                 contador=0;
  7.             }
  8.             else{
  9.                 contador=1;
  10.                 $(".menu").animate({"left":"-100%"});
  11.             }
  12.         });
  13. });



http://codepen.io/anon/pen/xGwXLK

De igual forma me parece que te estas complicando mucho, si es un sitio nuevo como dije antes, a mi parecer tendrías que usar algo que puedas editar.. si no tenes control sobre el código la tarea se hace bastante difícil.
  #14 (permalink)  
Antiguo 06/05/2015, 05:33
Avatar de ceaped  
Fecha de Ingreso: febrero-2004
Mensajes: 2.185
Antigüedad: 20 años, 2 meses
Puntos: 9
Respuesta: Hacer menú responsive a partir de estilos

Hola fede5426
Voy a probar y te cuento.

Gracias por tu ayuda
__________________
Diseñador Gráfico publicitario
  #15 (permalink)  
Antiguo 07/05/2015, 07:33
Avatar de ceaped  
Fecha de Ingreso: febrero-2004
Mensajes: 2.185
Antigüedad: 20 años, 2 meses
Puntos: 9
Respuesta: Hacer menú responsive a partir de estilos

Hola fede5426
¿Y se puede insertar la class="icon-menu"?

Yo lo pongo así pero no funciona.

Código Javascript:
Ver original
  1. <script>
  2. $("#navbar").addClass("icon-menu");
  3. </script>

Gracias por tu ayuda
__________________
Diseñador Gráfico publicitario
  #16 (permalink)  
Antiguo 07/05/2015, 07:56
Avatar de fede5426  
Fecha de Ingreso: diciembre-2014
Ubicación: Córdoba
Mensajes: 446
Antigüedad: 9 años, 4 meses
Puntos: 208
Respuesta: Hacer menú responsive a partir de estilos

Lo correcto en ese caso seria hacer esto:

Código Javascript:
Ver original
  1. $("#navbar").prepend('<div class="icon-menu"><img src="http://i59.tinypic.com/dz9hc1.png" /></div>');

Lo que hace "prepend()" es agregar lo que escribas dentro de los paréntesis antes del primer elemento hijo. En este caso lo que esta dentro de los paréntesis se agregaría dentro de #navbar (que es el elemento que indicamos) y antes del <ul>

El código javascript completo debería ser algo asi:

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.   $("#navbar").prepend('<div class="icon-menu"><img src="http://i59.tinypic.com/dz9hc1.png" /></div>');
  3.   var contador = 1;
  4.   $(".icon-menu").click(function(){
  5.             if(contador == 1){
  6.                 $('.menu').stop().animate({"left": "0"});
  7.                 contador=0;
  8.             }
  9.             else{
  10.                 contador=1;
  11.                 $(".menu").stop().animate({"left":"-100%"});
  12.             }
  13.         });
  14. });

Agregué también los stop() para que no falle la animación y se repita indefinidamente si haces muchos clicks en el botón.

Proba si así funciona.

Edito:

Acá te dejo un Codepen funcionando.

Saludos

Última edición por fede5426; 07/05/2015 a las 08:01
  #17 (permalink)  
Antiguo 07/05/2015, 08:56
Avatar de ceaped  
Fecha de Ingreso: febrero-2004
Mensajes: 2.185
Antigüedad: 20 años, 2 meses
Puntos: 9
Respuesta: Hacer menú responsive a partir de estilos

Hola fede5426
Me funciona bien.
Me pasa algo curioso
¿Le doy clic y no abre y le vuelvo a dar clic y ahí si abre?. Se abre siempre a la segunda vez de dar clic (sólo en la primera vez).

Ya le puse un "z-index: 999;" pero no es eso.

Codepen

Gracias por tu ayuda
__________________
Diseñador Gráfico publicitario

Última edición por ceaped; 07/05/2015 a las 09:13 Razón: Agregar enlace
  #18 (permalink)  
Antiguo 07/05/2015, 14:05
Avatar de ceaped  
Fecha de Ingreso: febrero-2004
Mensajes: 2.185
Antigüedad: 20 años, 2 meses
Puntos: 9
Respuesta: Hacer menú responsive a partir de estilos

Hola fede5426
Listo ya vi que era.
Era invertir los valor left. Yo quiero que se oculte al inicio y que por medio del botón se abra.

Muchas gracias por tu ayuda
__________________
Diseñador Gráfico publicitario
  #19 (permalink)  
Antiguo 08/05/2015, 14:29
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: Hacer menú responsive a partir de estilos

@fede5426 me parece excelente tu idea, yo hubiera usado Bootstrap pero como el no puede editar mucho tu idea es muy funcional
  #20 (permalink)  
Antiguo 08/05/2015, 19:31
Avatar de fede5426  
Fecha de Ingreso: diciembre-2014
Ubicación: Córdoba
Mensajes: 446
Antigüedad: 9 años, 4 meses
Puntos: 208
Respuesta: Hacer menú responsive a partir de estilos

De nada ceaped me alegro que te haya funcionado. Ya podes marcar el tema como solucionado entonces

Gracias JuJoGuAl, hasta hace muy poco no tenia la menor idea de como usar bootstrap, por lo general hago mi propio código.. Y hablando de este caso en particular, ese script lo he usado varias veces, cambiando los efectos de aparición y desaparición de vez en cuando, pero el script es básicamente el mismo.

Saludos

Etiquetas: background, color, estilos, responsive, width
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 00:25.