Tengo un pequeño problema con un menú, en el cual uno de los botones del menú hace función de acordeón, es decir en el momento de pulsar sobre este botón se despliegan una lista de subbotones.
El problema que tengo es que cuando se pulsa sobre este botón aparte de desplegarse la lista de los botones, también se mueve todo el menú horizontal de los demás botones.
Es decir, la cosa que quiero q haga este menu es:
Código HTML:
inicio | boton1 | botonDespegable | boton2 | botonDesp1 | | botonDesp2 | | botonDesp3 |
Si pulso sobre el botón "botonDespegable", me sale así:
Código HTML:
| botonDespegable | | botonDesp1 | | botonDesp2 | inicio | boton1 | botonDesp3 | boton2
A continuación dejo los trozos de código:
index.php
Código PHP:
Ver original
... <script type="text/javascript" src="jquery.lksMenu.js"></script> <script> $('document').ready(function(){ $('.menu').lksMenu(); }); </script> ... <div id="navigacija"> <div id="linkMenu"> <ul> <li><a href=" index.php">Inicio</a></li> <li> <div class="menu"> <ul> <li> <a href="#">Productos</a> <ul> <li><a href="sofas.php">Sofas</a></li> <li><a href="butacas.php">Butacas</a></li> <li><a href="sillas.php">Sillas</a></li> </ul> </li> </ul> </div> </li> <li><a href="#" onClick="pregfrec();">Preguntas</a></li> <li><a href="#" onClick="contacto();">Contacto</a></li> </ul> </div> </div> ...
lksMenu.js
Código Javascript:
Ver original
(function($){ // fn es un shortcut al prototipo (prototypo) de la libreria jquery // declarando un método dentro de esta librería la extendemos para ser usada // con cualquier selector $.fn.lksMenu=function(){ // para mantener la posibilidad de concatenar métodos es que retornamos la función en // lugar de solo ejecutar algo y ya. // en este caso usamos un each, porque el selector sobre el que aplicamos la función // podría contener más de un elemento , esto es , aplicaría $('.menu').menu() lo cual // ejecutaría el código para todos los elementos que tengan la clase menu, como puede // haber mas de uno es que ejecutamos el each para que corra sobre todos ellos return this.each(function(){ // obtenemos el elemento que se esta analizando en esta vuelta del each var menu= $(this); // localizamos los links principales y le asignamos un evento click menu.find('ul li > a').bind('click',function(event){ // identificamos el elemento sobre el que se hizo click var currentlink=$(event.currentTarget); // los ul que tengan la clase active serán los que estan abiertos // si el link sobre que presionamos ya estaba abierto , es decir tenia // la clase active, lo cerramos y nada mas if (currentlink.parent().find('ul.active').size()==1) { //cerramos el link porque apretamos sobre el mismo abierto currentlink.parent().find('ul.active').slideUp('medium',function(){ // le quitamos la clase currentlink.parent().find('ul.active').removeClass('active'); }); } // si ningun link estaba apretado else if (menu.find('ul li ul.active').size()==0) { //no hace falta cerrar ninguno y solo abrimos el elemento al // cual se le hizo click show(currentlink); } else { // si ya había un item abierto , simplemente lo localizamos // con find, y lo cerramos con slideup, menu.find('ul li ul.active').slideUp('medium',function(){ // una vez que cerramos el que estaba abierto // le quitamos la clase active menu.find('ul li ul').removeClass('active'); // abrimos uno nuevo que corresponde al que se clickeo show(currentlink); }); } }); // esta función es de soporte // todo lo que hace es abrir el elemento y asignarle la clase active function show(currentlink){ currentlink.parent().find('ul').addClass('active'); currentlink.parent().find('ul').slideDown('medium'); } }); } // esto es lo que deciamos al principio , ejecutamos la función por eso los // parentesis y le pasamos por parametro la libreria jQuery. })(jQuery);
style.css
Código CSS:
Ver original
#navigacija { /* con clear y float decimos donde queremos que si situen, por ejemplo al lado izquierdo de una imagen entonces pondríamos left*/ /*width: 760px;*/ width: auto; /*margin: 0 0 10px 0;*/ padding: 5px 10px 10px 10px; padding: 0; font: 9pt Arial, Verdana, Sans-Serif; } #navigacija div#linkMenu > ul { list-style: none; width: auto; margin: 3px 0 3px 0; padding: 0; font: 9pt Arial, Verdana, Sans-Serif; /*display:inline;*/ } #navigacija div#linkMenu > ul > li { /*float: left;*/ display: inline-block; } /* separación entre botón y botón */ #navigacija li { margin-bottom: 4px; /*display:inline;*/ } /* Marca el tamaño de los botones y el color que llevan */ #navigacija li a, #navigacija li a:visited { text-align: center; height: 20px; text-decoration: none; color: #fff; display: block; padding: 6px 93px 0 10px; background: #908383; } /* Cuando se pasa el ratón por encima cambia de color el botón */ #navigacija li a:hover { /*background: #A9CAEB; color: #286ea0;*/ background: #000000; color: #FFF; } ... .menu{ font-family: 9pt Verdana, Geneva, sans-serif; } .menu ul{ /*list-style: none;*/ /*margin:0; padding:0;*/ /*width:250px;*/ } .menu ul li ul{ /*width:240px;*/ } .menu ul li{ /*margin:0; padding:5px; background-color: #4B4B4B;*/ } .menu ul li a{ /*padding-top:5px; border-color: #404040 #1A1A1A #1A1A1A #505050; border-style: solid; border-width: 1px; padding-left: 10px; display:block; text-decoration: none; color:white; /*font:bold 17px Arial,Helvetica,sans-serif; font: 9pt Arial, Verdana, Sans-Serif; height:30px; background: #5B5B5B no-repeat center right; line-height: 1.3em;*/ } .menu ul li ul a{ /*border-color: #404040 #1A1A1A #1A1A1A #505050; border-style: solid; border-width: 1px; margin-top:2px; padding-left: 10px; display:block; text-decoration: none; color:white; font-size:14px; height:25px; font-weight: normal; background: #0D0D0D;*/ } .menu ul li a:hover{ /*background: #DB5A0A no-repeat center right;*/ } .menu ul li ul a:hover{ /*background: #FCAB14; color:black;*/ } .menu ul li ul{ display:none; } ...
Muchas gracias.