Bueno, llevo un buen rato batalleando con un par de funciones js y no consigo sacar nada en claro, si os parece bien primero comienzo explicando lo que quiero hacer y luego el problema en sí.
Tengo una página web en la que quiero utilizar menús desplegables con jquery , pero mi problema llega cuando quiero fijar uno de esos menús a otro, de modo que el botón con el que se desplega éste 2º menú también atiende a la posición del primer menú, lo explico mediante un par de ilustraciones:
Los menús laterales serían sidebar y sidebar2, sidebar sería el menú "principal" y sidebar2 sería el menú fijado a sidebar, de modo que cuando desplegamos el menú principal (sidebar) éste también altera su posición:
Hasta ahí he conseguido apañármelas, pero el problema radica en que quiero que sidebar2 se despliegue en dependencia de la posición de sidebar, es decir, cuando sidebar no está desplegada, sidebar2 debería desplegarse de esta forma:
De otro modo, cuando sidebar está desplegada sidebar2 debería desplegarse así:
Os dejo los scripts en sí:
Código:
el fragmento de css:<script type="text/javascript"> (function sidebar() { var sidebar = $('#sidebar').show(), sidebar2 = $('#sidebar2').show(), sidebarButton = $('#sidebarButton', sidebar), w = sidebar.outerWidth(); sidebar.css('left', '-' + w + 'px'); sidebarButton.toggle ( function() { sidebar.css('left', 0).show('slide', { easing: 'easeOutBounce' }, 1000, function() { sidebarButton.css('right', '-14px'); }); sidebar2.css('left', -170).show('slide', { easing: 'easeOutBounce' }, 1000, function() { sidebarButton.css('right', '-14px'); }); }, function() { sidebar.animate({ left: '-' + w + 'px' }, 1000, 'easeOutBounce'); sidebarButton.css('right', '-14px'); sidebar2.animate({ left: -360 + '-' + w + 'px' }, 1000, 'easeOutBounce'); sidebarButton.css('right', '-14px'); } ); }()); (function sidebar2() { var sidebar2 = $('#sidebar2').show(), sidebar = $('#sidebar').show(), sidebar2Button = $('#sidebar2Button', sidebar2), w = sidebar2.outerWidth(); sidebar2.css('left', '-' + w + 'px'); sidebar2Button.toggle ( function idle() { sidebar2.css('left', 0).show('slide', { easing: 'easeOutBounce' }, 1000, function() { sidebar2Button.css('right', '-14px'); }); }, function() { sidebar2.animate({ left: '-' + w + 'px' }, 1000, 'easeOutBounce'); sidebar2Button.css('right', '-14px'); } ); }()); </script>
Código:
y la disposición en html:#sidebar { position: fixed; top:0; left:0; display: none; border-top: 0px solid white; border-right: 0px solid white; background: #000; /* background: -moz-linear-gradient (top, #ebebeb, white); background: -webkite-gradient(linear, left top, left bottom, from(#ebebeb), to(white));*/ padding: 0; -moz-border-radius: 2px; -webkit-border-radius: 2px; color: #fff; width: 190px; height: 100%; } #sidebarButton { top:50%; position: absolute; right: -14px; cursor: pointer; margin: -65px -21px 0 0; } ... #sidebar2 { position: fixed; top:151px; left:0; z-index: 52; display: none; border-top: 0px solid white; border-right: 0px solid white; background:#fff; /* background: -moz-linear-gradient (top, #ebebeb, white); background: -webkite-gradient(linear, left top, left bottom, from(#ebebeb), to(white));*/ padding: 30px; -moz-border-radius: 2px; -webkit-border-radius: 2px; color: #fff; width: 300px; } #sidebar2Button { position: absolute; top:0px; right: -14px; cursor: pointer; margin: 0 -21px 0 0; }
Código:
Los scripts ahora mismo están de tal forma que, aunque sidebar2 está fijada a sidebar, cuando quiero desplegarla lo hace desde la posición left=0 , y lo mismo cuando quiero cerrar el menú de nuevo.</head><body><div id="sidebar" style="z-index: 2;">-contenido sidebar-</div><div id="sidebar2">-contenido sidebar2</div>
PD: como he dicho estoy muy verde en esto, pero intuyo que es en el argumento destacado en verde más arriba dentro de function sidebar2 donde tengo que poner algo parecido a una variable pero que atienda a los valores que produce function sidebar ,pero como ya he dicho no tengo ni pajolera idea de cómo puedo ponerlo, y tampoco he encontrado (o no he sabido encontrar) nada de ayuda por internet, así que si me pudieseis echar un cable os estaría más que agradecido, porque ahora mismo estoy totalmente estancado.
Un saludo!