Ver Mensaje Individual
  #11 (permalink)  
Antiguo 10/01/2016, 21:32
Avatar de g3kdigital
g3kdigital
 
Fecha de Ingreso: noviembre-2013
Ubicación: En mi apartamento en bogotá
Mensajes: 208
Antigüedad: 11 años
Puntos: 39
Respuesta: slideToggle que se recoja cuando se expanda otro

Es decir, algo más como en este pen: http://codepen.io/g3kdigital/pen/gPRbBJ iba a sugerirte usar el seudoselector :target con css, pero cuando de retrocompatibilidad se trata lo mejor es javascript.


Utilice esta estructura html donde los div, están separados de los enlaces.:

Código HTML:
Ver original
  1. <div class="enlaces">
  2.   <a href="#" class="enlace focus1">  Caja 1  </a>
  3.   <a href="#" class="enlace focus2">  Caja 2  </a>
  4.   <a href="#" class="enlace focus3">  Caja 3  </a>
  5. </div>
  6.  
  7. <div class="caja box1">
  8.   <h4 class="titulo">contenido 1</h4>
  9.   <p class="parrafo">Parrafo</p>
  10. </div>
  11. <div class="caja box2">
  12.   <h4 class="titulo">contenido 2</h4>
  13.   <p class="parrafo">Parrafo</p>
  14. </div>
  15. <div class="caja box3">
  16.   <h4 class="titulo">contenido 3</h4>
  17.   <p class="parrafo">Parrafo</p>
  18. </div>

Luego tienes que ocultar el contenido con css y crear una clase ("aparece") que desoculte este contenido.

Código CSS:
Ver original
  1. .caja {
  2.   overflow: hidden;
  3. }
  4.  
  5. .parrafo {
  6.   height: 1px;
  7.   opacity: 0;
  8. }
  9.  
  10. .parrafo.aparece {
  11.   height: auto;
  12.   opacity: 1;
  13. }


Por ultimo, solo tienes que coger jQuery y creas una función que se active cuando no importa que enlace tenga el foco, todos las cajas oculten los elementos y otra función donde dependiendo del enlace clickeado des-oculte al div deseado:

Código Javascript:
Ver original
  1. $( ".enlace" ).focus(function() {
  2.   $( ".parrafo" ).removeClass("aparece");
  3. });
  4.  
  5. $( ".focus1" ).focus(function() {
  6.   $( ".box1 .parrafo" ).addClass("aparece");
  7. });
  8. $( ".focus2" ).focus(function() {
  9.   $( ".box2 .parrafo" ).addClass("aparece");
  10. });
  11. $( ".focus3" ).focus(function() {
  12.   $( ".box3 .parrafo" ).addClass("aparece");
  13. });

Hay maneras de optimizar más el código de manera que no sea necesario crean una función por cada enlace y div, pero mis conocimientos en jQuery son muy limitados.
__________________
Puedes ser el tipo de persona que se amarga por lo inevitable o aceptar el reto de superarse siempre e ir a la par con el progreso.

WEB: G3K.co | codepen.io/g3kdigital

Última edición por g3kdigital; 10/01/2016 a las 21:40