Foros del Web » Programando para Internet » Javascript »

[Aporte] Sliding Menu JS + CSS

Estas en el tema de [Aporte] Sliding Menu JS + CSS en el foro de Javascript en Foros del Web. Hola a todos, les traigo un Sliding Menú Creado por mi mismo. Menu con sólo 1 nivel que al hacer click, deja marcado con color ...
  #1 (permalink)  
Antiguo 22/12/2009, 18:00
 
Fecha de Ingreso: agosto-2009
Mensajes: 21
Antigüedad: 14 años, 8 meses
Puntos: 0
De acuerdo [Aporte] Sliding Menu JS + CSS

Hola a todos, les traigo un Sliding Menú Creado por mi mismo.

Menu con sólo 1 nivel que al hacer click, deja marcado con color diferente donde estás parado. Muy util para navegabilidad.

Pueden ver el Ejemplo aquí: [URL="http://barclow.exofire.net/barclow/menu/menu.html"]¡Click Me![/URL]

Procedo a comentar poner el código y a comentarlo, si quieren bajarlo, les dejo el Ejemplo en html para que lo bajen: [URL="http://barclow.exofire.net/barclow/slidingMenu.rar"]¡Click Me![/URL] (carpeta menu, el unico archivo de ahí)

la lógica es ponerle id="n" a los menus e id="n-m" a los sub menus, es decir:
<tr id="1" class="Menu">
</tr>
<tr id="1-1" class="sub">
</tr>

eso quiere decir que la fila 1-1 es sub menu de la fila 1.

Cada fila lleva asociado un evento en javascript, los scripts están comentados.
Dudas, consultas y recomendaciones, ¡¡yo feliz!!


Código Javascript:
Ver original
  1. /* Esta función fue hecha por mi, y es de libre uso para cualquiera que quiera usarla.  *
  2.  * Cualquier comentario, duda o recomendación pueden hacerla a [email protected].       *
  3.  *                                                                                      *
  4.  *                  Gracias                                                             */
  5. function menu(fila)
  6. {
  7.     var tabla = document.getElementById("tabla"); //Traigo la tabla
  8.    
  9.     for(i = 1; i<= tabla.rows.length; i++) { //Estos bucles son para volver al css Sub a todas las celdas.
  10.         for(j = 1; j<= tabla.rows.length; j++) {
  11.             var sub = document.getElementById(i + "-" + j);
  12.             if (sub != null) {
  13.                 sub.style.display='none';
  14.             }
  15.         }
  16.     }
  17.    
  18.    
  19.     for(i = 1; i <= tabla.rows.length; i++)  //Recorrer filas de la tabla
  20.     {
  21.         var sub = document.getElementById(fila.id + "-" + i); //Traigo la celda
  22.        
  23.         if(sub != null) //Si la celda es nula no hace nada
  24.         {
  25.             if(sub.style.display == 'block')  //Si la celda con esa id existe, entonces pregunta si debe ocultar o mostrar
  26.             {
  27.                 sub.style.display='none'; //Oculta
  28.             }
  29.             else{
  30.                 sub.style.display='block'; //Muestra
  31.             }
  32.         }
  33.     }
  34. }
  35. function sub(fila, url, frame){
  36.     var tabla = document.getElementById("tabla"); //Traigo la tabla
  37.     for(i = 1; i<= tabla.rows.length; i++) { //Estos bucles son para volver al css Sub a todas las celdas.
  38.         for(j = 1; j<= tabla.rows.length; j++) {
  39.             var sub = document.getElementById(i + "-" + j);
  40.             if (sub != null) {
  41.                 sub.setAttribute("class", "Sub");
  42.             }
  43.         }
  44.     }
  45.     fila.setAttribute("class", "Selected"); //Para 'iluminar' la última celda seleccionada
  46.     top.frames[frame].location.href = url; //Carga la url en la frame seleccionada.
  47. }

Código CSS:
Ver original
  1. .Menu
  2. {
  3.     background-image:url(../imagenes/menuGabo/menu.png);
  4.     background-repeat:no-repeat;
  5.     text-decoration: none;
  6.     vertical-align: middle;
  7. }
  8. .Menu td
  9. {
  10.     width:150px;
  11.     height:32px;  
  12.     padding-left:10px;
  13.     vertical-align: middle;
  14. }
  15. .Menu a
  16. {
  17.     color: #FFFFFF;
  18.     text-decoration: none;
  19.     font-weight:bold;
  20.     font-family: Arial, Helvetica, sans-serif;
  21.     font-size:10pt;
  22.     vertical-align: middle;
  23. }
  24. .Sub
  25. {
  26.     text-decoration:none;
  27.     display:none;
  28.     background-image:url(../imagenes/menuGabo/sub2.png);
  29.     background-repeat:no-repeat;
  30.     text-decoration: none;
  31.     vertical-align: middle;
  32. }
  33. .Sub td
  34. {
  35.     width:150px;
  36.     height:32px;
  37.     padding-left:20px;
  38.     vertical-align: middle;
  39. }
  40. .Sub a
  41. {
  42.     color: #FFFFFF;
  43.     text-decoration: none;
  44.     font-weight:bold;
  45.     font-family: Arial, Helvetica, sans-serif;
  46.     font-size:small;
  47.     vertical-align: middle;
  48. }
  49. .Selected
  50. {
  51.     text-decoration:none;
  52.     display:none;
  53.     background-image:url(../imagenes/menuGabo/selected.png);
  54.     background-repeat:no-repeat;
  55.     text-decoration: none;
  56.     vertical-align: middle;
  57. }
  58. .Selected td
  59. {
  60.     width:150px;
  61.     height:32px;
  62.     padding-left:20px;
  63.     vertical-align: middle;
  64. }
  65. .Selected a
  66. {
  67.     color: #FFFFFF;
  68.     text-decoration: none;
  69.     font-weight:bold;
  70.     font-family: Arial, Helvetica, sans-serif;
  71.     font-size:small;
  72.     vertical-align: middle;
  73. }

Código HTML:
Ver original
  1. <html xmlns="http://www.w3.org/1999/xhtml">
  2.     <title>Página sin título</title>
  3.     <link rel="Stylesheet" type="text/css" href="../Estilos/menuGabo.css" />
  4.     <script type="text/javascript" src="../js/menuGabo.js" ></script>
  5. </head>
  6.     <form id="form1">
  7.     <div>
  8.         <table id="tabla">
  9.             <tr id="1" class="Menu" onclick="menu(this);" >
  10.                 <td>
  11.                     <a href="#" >Menu 1</a>
  12.                 </td>
  13.             </tr>
  14.             <tr id="1-1" class="Sub" onclick="sub(this, '#', 'parent');" >
  15.                 <td>
  16.                     <a href="#">subItem 1</a>
  17.                 </td>
  18.             </tr>
  19.             <tr id="1-2" class="Sub" onclick="sub(this, '#', 'parent');" >
  20.                 <td >
  21.                     <a href="#">subItem 2</a>
  22.                 </td>
  23.             </tr>
  24.             <tr id="2" class="Menu" onclick="menu(this);">
  25.                 <td>
  26.                      <a href="#" >Menu 2</a>
  27.                 </td>
  28.             </tr>
  29.             <tr class="Sub" id="2-1" onclick="sub(this, '#', 'parent');">
  30.                 <td >
  31.                     <a href="#">SubItem 3</a>
  32.                 </td>
  33.             </tr>
  34.         </table>
  35.     </div>
  36.     </form>
  37. </body>
  38. </html>
  #2 (permalink)  
Antiguo 22/12/2009, 18:03
 
Fecha de Ingreso: agosto-2009
Mensajes: 21
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: [Aporte] Sliding Menu JS + CSS

  • [URL="http://barclow.exofire.net/barclow/menu/menu.html"]http://barclow.exofire.net/barclow/menu/menu.html[/URL]
  • http://barclow.exofire.net/barclow/menu/menu.html
  • [URL="http://barclow.exofire.net/barclow/slidingMenu.rar"]http://barclow.exofire.net/barclow/slidingMenu.rar[/URL]
  • http://barclow.exofire.net/barclow/slidingMenu.rar

Última edición por barclow; 22/12/2009 a las 18:04 Razón: Tratar de poner los links, pero no funciona D:, en fin, hagan copy paste XD
  #3 (permalink)  
Antiguo 22/12/2009, 19:01
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: [Aporte] Sliding Menu JS + CSS

Muy bueno che, te felicito...
Me parece que estaria mejor el efecto con el evento onmouseover, pero bueno, es a gusto de cada uno
  #4 (permalink)  
Antiguo 22/12/2009, 20:25
 
Fecha de Ingreso: agosto-2009
Mensajes: 21
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: [Aporte] Sliding Menu JS + CSS

Cita:
Iniciado por jackson666 Ver Mensaje
Muy bueno che, te felicito...
Me parece que estaria mejor el efecto con el evento onmouseover, pero bueno, es a gusto de cada uno
eso se aplica a las tablas con grandes cantidades de datos, para mi caso, esta es una tabla que bien podría ir insertada en frames (pq el script requiere pasar por parámetro el frame de destino) y que sirve para mejorar la navegabilidad del sitio.

Es decir, al quedar marcada la última opción que seleccionó el usuario, éste sabe perfectamente dónde está parado dentro del sitio.

Para una tabla de ese estilo ya presentaré un nuevo aporte con el ejemplo. Cuando tenga algo de tiempo.

Saludos
  #5 (permalink)  
Antiguo 22/12/2009, 20:35
 
Fecha de Ingreso: enero-2009
Mensajes: 6
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: [Aporte] Sliding Menu JS + CSS

esta bueno, se parece un poco a las acordeones de jquery.
  #6 (permalink)  
Antiguo 22/12/2009, 21:31
 
Fecha de Ingreso: agosto-2009
Mensajes: 21
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: [Aporte] Sliding Menu JS + CSS

Me gustaría añadirle algo sí...

cómo lo puedo hacer para que al mostrar las celdas ocultas se ejecute una animación?
es decir, que aparezcan desde arriba hacia abajo...?
  #7 (permalink)  
Antiguo 27/12/2009, 17:22
 
Fecha de Ingreso: agosto-2009
Mensajes: 21
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: [Aporte] Sliding Menu JS + CSS

Me parece que utilizando la misma rutina de setTimeOut() puedo modificar el valor de posición relativa e ir aumentanto de a poco el valor "y" para que la tabla se mueva


y más tarde el visibility ir aumentandolo desde 0 a 100 gradualmente bajo el mismo esquema


lo intentaré y les cuento qué tal me fué :D



Saludos.-
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 12:13.