Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/10/2011, 20:43
Avatar de Mostolexs
Mostolexs
 
Fecha de Ingreso: octubre-2011
Mensajes: 2
Antigüedad: 12 años, 6 meses
Puntos: 0
Pregunta Dudas menús desplegables jquery

Hola compañeros, acudo a vosotros con unas cuantas dudas acerca de javascript (estoy muy muy verde) , y aprovecho para presentarme en el foro.

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:
<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>
el fragmento de css:

Código:
#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;
}
y la disposición en html:
Código:
</head><body><div id="sidebar" style="z-index: 2;">-contenido sidebar-</div><div id="sidebar2">-contenido sidebar2</div>
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.

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!