Foros del Web » Programando para Internet » Javascript »

Expandir / Contraer Texto

Estas en el tema de Expandir / Contraer Texto en el foro de Javascript en Foros del Web. Hola gente! Quiero saber como hacer si hay algun codigo para armar una especie de menu que para cuando haga click en alguno de los ...
  #1 (permalink)  
Antiguo 05/11/2012, 10:18
Avatar de datcom  
Fecha de Ingreso: enero-2011
Ubicación: Universo local, Vía láctea, Planeta Azul.
Mensajes: 216
Antigüedad: 13 años, 2 meses
Puntos: 0
Expandir / Contraer Texto

Hola gente!
Quiero saber como hacer si hay algun codigo para armar una especie de menu que para cuando haga click en alguno de los titulos se desgloce abajo automaticamente un texto. Y que se pueda expandir todos a la vez a parte de individualelmente

Es posible?

for example:


{expandir todos}

{titulo 1}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum sed nulla sed lorem euismod tempus. In hac habitasse platea dictumst.

{titulo 2}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum sed nulla sed lorem euismod tempus. In hac habitasse platea dictumst.

{titulo 3}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum sed nulla sed lorem euismod tempus. In hac habitasse platea dictumst.

gracias!
__________________
De la Luz venimos, y hacia la Luz vamos.
Solo hay una sola verdad, y esa es el Amor.
Ayuda aquien tienes al lado y seras ayudado.
Ánimo!
  #2 (permalink)  
Antiguo 05/11/2012, 13:43
3nr1c
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Expandir / Contraer Texto

No es muy difícil:

Código CSS:
Ver original
  1. #el1, #el2, #el3 {
  2. display:none;
  3. }

Código HTML:
Ver original
  1. <a href="#" id="toggleall">Abrir todos</a>
  2. <br/>
  3. <a href="#" id="toggle1">Titulo1</a>
  4. <div id="el1">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum sed nulla sed lorem euismod tempus. In hac habitasse platea dictumst. </div>
  5. <br/>
  6. <a href="#" id="toggle2">Titulo2</a>
  7. <div id="el2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum sed nulla sed lorem euismod tempus. In hac habitasse platea dictumst. </div>
  8. <br/>
  9. <a href="#" id="toggle3">Titulo3</a>
  10. <div id="el3">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum sed nulla sed lorem euismod tempus. In hac habitasse platea dictumst. </div>

Código Javascript:
Ver original
  1. function s(str){
  2.     return document.querySelector(str);
  3. }
  4.  
  5. function toggle(n){
  6.   var el = s('#el'+n);
  7.  
  8.   if( el.style.display == 'none' || el.style.display == '' ){
  9.     el.style.display = 'block';
  10.   }else{
  11.     el.style.display = 'none';
  12.   }
  13. }
  14.  
  15. s('#toggle1').onclick = function(){ toggle(1); }
  16. s('#toggle2').onclick = function(){ toggle(2); }
  17. s('#toggle3').onclick = function(){ toggle(3); }
  18. s('#toggleall').onclick = function(){
  19.   toggle(1);
  20.   toggle(2);
  21.   toggle(3);
  22. }

(me ha funcionado en Firefox)

Un saludo
  #3 (permalink)  
Antiguo 05/11/2012, 17:04
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 14 años
Puntos: 131
Respuesta: Expandir / Contraer Texto

algo facil seria usar el elemento details, el titulo debe ir con summary

Código HTML:
Ver original
  1. <button onclick="desgloza()">Click</button>
  2.  
  3. <details id="uno">
  4. <summary>Click me!</summary>
  5. <p>anything</p>
  6.  
  7. <details id="dos">
  8. <summary>Click me!</summary>
  9. <p>anything</p>
  10.  
  11. <details id="tres">
  12. <summary>Click me!</summary>
  13. <p>anything</p>
  14.    
  15. <script>
  16. function desgloza()
  17.     {
  18.     var uno = document.getElementById("uno").open = true;
  19.     var dos = document.getElementById("dos").open = true;
  20.     var tre = document.getElementById("tres").open = true;
  21.     }    
  22. </script>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

Saludos
  #4 (permalink)  
Antiguo 05/11/2012, 18:21
Avatar de datcom  
Fecha de Ingreso: enero-2011
Ubicación: Universo local, Vía láctea, Planeta Azul.
Mensajes: 216
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Expandir / Contraer Texto

Cita:
Iniciado por 3nr1c Ver Mensaje
No es muy difícil:

Código CSS:
Ver original
  1. #el1, #el2, #el3 {
  2. display:none;
  3. }

Código HTML:
Ver original
  1. <a href="#" id="toggleall">Abrir todos</a>
  2. <br/>
  3. <a href="#" id="toggle1">Titulo1</a>
  4. <div id="el1">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum sed nulla sed lorem euismod tempus. In hac habitasse platea dictumst. </div>
  5. <br/>
  6. <a href="#" id="toggle2">Titulo2</a>
  7. <div id="el2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum sed nulla sed lorem euismod tempus. In hac habitasse platea dictumst. </div>
  8. <br/>
  9. <a href="#" id="toggle3">Titulo3</a>
  10. <div id="el3">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum sed nulla sed lorem euismod tempus. In hac habitasse platea dictumst. </div>

Código Javascript:
Ver original
  1. function s(str){
  2.     return document.querySelector(str);
  3. }
  4.  
  5. function toggle(n){
  6.   var el = s('#el'+n);
  7.  
  8.   if( el.style.display == 'none' || el.style.display == '' ){
  9.     el.style.display = 'block';
  10.   }else{
  11.     el.style.display = 'none';
  12.   }
  13. }
  14.  
  15. s('#toggle1').onclick = function(){ toggle(1); }
  16. s('#toggle2').onclick = function(){ toggle(2); }
  17. s('#toggle3').onclick = function(){ toggle(3); }
  18. s('#toggleall').onclick = function(){
  19.   toggle(1);
  20.   toggle(2);
  21.   toggle(3);
  22. }

(me ha funcionado en Firefox)

Un saludo
Hola , lo he probado y no me funciona... no se abren al clickear.
__________________
De la Luz venimos, y hacia la Luz vamos.
Solo hay una sola verdad, y esa es el Amor.
Ayuda aquien tienes al lado y seras ayudado.
Ánimo!
  #5 (permalink)  
Antiguo 05/11/2012, 19:12
Avatar de datcom  
Fecha de Ingreso: enero-2011
Ubicación: Universo local, Vía láctea, Planeta Azul.
Mensajes: 216
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Expandir / Contraer Texto

Cita:
Iniciado por hackjose Ver Mensaje
algo facil seria usar el elemento details, el titulo debe ir con summary

Código HTML:
Ver original
  1. <button onclick="desgloza()">Click</button>
  2.  
  3. <details id="uno">
  4. <summary>Click me!</summary>
  5. <p>anything</p>
  6.  
  7. <details id="dos">
  8. <summary>Click me!</summary>
  9. <p>anything</p>
  10.  
  11. <details id="tres">
  12. <summary>Click me!</summary>
  13. <p>anything</p>
  14.    
  15. <script>
  16. function desgloza()
  17.     {
  18.     var uno = document.getElementById("uno").open = true;
  19.     var dos = document.getElementById("dos").open = true;
  20.     var tre = document.getElementById("tres").open = true;
  21.     }    
  22. </script>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

Saludos

Este me funciono barbaro pero tengo dos cuestiones haber si se pueden agregar.
En el desgloza todo me los abre todos pero no me los cierra todos cuando click denuevo.

Este por un lado y lo otro era agregar un efecto deslizante y no tan cortante es posible?

Gracias!
__________________
De la Luz venimos, y hacia la Luz vamos.
Solo hay una sola verdad, y esa es el Amor.
Ayuda aquien tienes al lado y seras ayudado.
Ánimo!
  #6 (permalink)  
Antiguo 05/11/2012, 19:34
Avatar de chwc  
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires ! :D
Mensajes: 814
Antigüedad: 15 años, 8 meses
Puntos: 103
Respuesta: Expandir / Contraer Texto

obviamente no te los cierra, ya que lo unico que hace esa función es abrirlos , vamos a mejorar el script

Cita:
​var estado = false // estado : cerrado
function modificarDivs(elementos, estado) {
for (x in elementos)
document.getElementById(elementos[x]).open = estado
}

function desgloza() {
if (estado === false) {
modificarDivs(["uno", "dos", "tres"], true)
estado = true
} else {
modificarDivs(["uno", "dos", "tres"], false)
estado = false
}
}​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ ​​​​​​​​​​​​​​​​​​​​​
  #7 (permalink)  
Antiguo 05/11/2012, 19:40
Avatar de datcom  
Fecha de Ingreso: enero-2011
Ubicación: Universo local, Vía láctea, Planeta Azul.
Mensajes: 216
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Expandir / Contraer Texto

Funciona barbaro si, pero me acabod e dar cuenta que con details no em sirve nada.
como puedo reemplazar ese tag
__________________
De la Luz venimos, y hacia la Luz vamos.
Solo hay una sola verdad, y esa es el Amor.
Ayuda aquien tienes al lado y seras ayudado.
Ánimo!

Última edición por datcom; 05/11/2012 a las 19:52
  #8 (permalink)  
Antiguo 06/11/2012, 06:04
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Expandir / Contraer Texto

Cita:
Iniciado por hackjose Ver Mensaje
algo facil seria usar el elemento details, el titulo debe ir con summary

Código HTML:
Ver original
  1. <button onclick="desgloza()">Click</button>
  2.  
  3. <details id="uno">
  4. <summary>Click me!</summary>
  5. <p>anything</p>
  6.  
  7. <details id="dos">
  8. <summary>Click me!</summary>
  9. <p>anything</p>
  10.  
  11. <details id="tres">
  12. <summary>Click me!</summary>
  13. <p>anything</p>
  14.    
  15. <script>
  16. function desgloza()
  17.     {
  18.     var uno = document.getElementById("uno").open = true;
  19.     var dos = document.getElementById("dos").open = true;
  20.     var tre = document.getElementById("tres").open = true;
  21.     }    
  22. </script>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

Saludos
Pero eso solo te va a funcionar en Chrome, no me parece que sea una solución.
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #9 (permalink)  
Antiguo 08/11/2012, 10:30
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 14 años
Puntos: 131
Respuesta: Expandir / Contraer Texto

Se que esta a medias porque no vuelve a contraer, pero esto lo hice intencionalmente para que datcom escriba dicho codigo.

emprear, no sabia que chrome era el unico que lo soporta, gracias por la info.

Saludos a todos

Etiquetas: contraer, expandir
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:17.