Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/12/2009, 18:00
barclow
 
Fecha de Ingreso: agosto-2009
Mensajes: 21
Antigüedad: 15 años, 4 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>