Mostrar/Ocultar Div con un Código Mejorado

deskpro123 Seguir

Iota
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
5 Jun 2012
Mensajes
2.014
Hola a todos, hasta hace poco usaba un codigo Javascript medio largo para Ocultar un div y Mostrar Otro en el mismo lugar del primero, con la funcion OnClick, hoy he encontrado un codigo mucho mejor pero por mas que trato no me sale, es que solo se lo basico de CSS.

Si alguien pudiera ayudarme.

Aqui pueden testearlo:
JS Bin - Collaborative JavaScript Debugging

Este es el codigo:

Insertar CODE, HTML o PHP:
<style>
.collapse > * + *{
  display:none;
}
.collapse > *{
  cursor:pointer;
}
.collapse:focus{
  outline:none;
}
.collapse:focus > * + *{
  display:block; 
}
</style>

  
  <div class="collapse" tabindex="1">
     <h2 >Mostrar Informacion</h2>
    <p><div id="ss">Informacion usuario</div></p>
  </div>

Lo que nesecito que haga es que cuando des click a Mostrar Informacion ese div desaparezca y aparezca el otro que diga Informacion Usuario.


Un saludo a todos, y gracias de ante mano a todos los del foro que siempre me ayudan cuando estoy trabado y mas que a nadie a [MENTION=9679]cicklow[/MENTION] que siempre me saca del problema :D
 

GGalizzi

Alfa
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
15 Ene 2014
Mensajes
21
Te faltaba ponerle display:none al primer hijo (el h2) de .collapse.

Fijate los selectores que estabas usando originalmente:

Insertar CODE, HTML o PHP:
.collapse:focus > * + *
Quiere decir que las especificaciónes que vas a declarar ahora se van a aplicar al hermano, de los hijos directos de .collapse cuando se encuentre en focus. Osea, eso hace que se muestra el <p>

Pero faltaba que se esconda el primer hijo de .collapse (el h2) cuando .collapse esta en focus.

Osea
Insertar CODE, HTML o PHP:
.collapse:focus > h2 {
display: none;
}
O, siguiendo con el uso de wildcards
Insertar CODE, HTML o PHP:
.collapse:focus > * {
display:none;
}

Te dejo como quedaria en el jsbin:
Primero te linkeo sin el uso de wildcards, para que quizas te ayude a entender mejor que esta pasando en el código.
JS Bin - Collaborative JavaScript Debugging

El mismo ejemplo pero con wildcards:
http://jsbin.com/Amejum/204/edit
 
Última edición:

xLincex

Zeta
Verificación en dos pasos activada
¡Ha verificado su Paypal!
Desde
23 Dic 2013
Mensajes
1.556
Podrias probarlo asi :

Insertar CODE, HTML o PHP:
<style>
#aparecer{ display:none;}
 .collapse > * + *{
  display:none;
}
.collapse > *{
  cursor:pointer;
}
.collapse:focus{
  outline:none;
}
.collapse:focus > * + *{
  display:block; 
}
</style>

 
<div class="collapse" tabindex="1"> 
<div onclick="document.getElementById('desaparecer').style.display = 'none';document.getElementById('aparecer').style.display = 'block';" id="desaparecer" /><h2 ><a>Mostrar Informacion</a></h2></div>
<p><div id="aparecer">Informacion usuario</div></p>
 </div>
 

deskpro123

Iota
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
5 Jun 2012
Mensajes
2.014
Te faltaba ponerle display:none al primer hijo (el h2) de .collapse.

Fijate los selectores que estabas usando originalmente:

Insertar CODE, HTML o PHP:
.collapse:focus > * + *
Quiere decir que las especificaciónes que vas a declarar ahora se van a aplicar al hermano, de los hijos directos de .collapse cuando se encuentre en focus. Osea, eso hace que se muestra el <p>

Pero faltaba que se esconda el primer hijo de .collapse (el h2) cuando .collapse esta en focus.

Osea
Insertar CODE, HTML o PHP:
.collapse:focus > h2 {
display: none;
}
O, siguiendo con el uso de wildcards
Insertar CODE, HTML o PHP:
.collapse:focus > * {
display:none;
}

Te dejo como quedaria en el jsbin:
Primero te linkeo sin el uso de wildcards, para que quizas te ayude a entender mejor que esta pasando en el código.
JS Bin - Collaborative JavaScript Debugging

El mismo ejemplo pero con wildcards:
JS Bin - Collaborative JavaScript Debugging

Muchas gracias amigo, me podrias explicar lo de Wildcards que no entiendo que viene siendo y a lo mejor me puede servir de mucha ayuda, supongo que son los azteriscos, pero para que sirve?

Muchas gracias amigo.

---------- Post agregado el 19-ene-2014 hora: 00:32 ----------

Podrias probarlo asi :

Insertar CODE, HTML o PHP:
<style>
#aparecer{ display:none;}
 .collapse > * + *{
  display:none;
}
.collapse > *{
  cursor:pointer;
}
.collapse:focus{
  outline:none;
}
.collapse:focus > * + *{
  display:block; 
}
</style>

 
<div class="collapse" tabindex="1"> 
<div onclick="document.getElementById('desaparecer').style.display = 'none';document.getElementById('aparecer').style.display = 'block';" id="desaparecer" /><h2 ><a>Mostrar Informacion</a></h2></div>
<p><div id="aparecer">Informacion usuario</div></p>
 </div>

Te lo agradezco amigo, muchas gracias,
 

GGalizzi

Alfa
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
15 Ene 2014
Mensajes
21
Podrias probarlo asi :
Pero ahí estas usando Javascript, y me parece que deskpro no quiere usar JS.

Muchas gracias amigo, me podrias explicar lo de Wildcards que no entiendo que viene siendo y a lo mejor me puede servir de mucha ayuda, supongo que son los azteriscos, pero para que sirve?

Si, las wildcards son los asteriscos.

Cuando las usas, el sitio va a aplicar el estilo a todos los elementos que correspondan.

Por ejemplo:

Insertar CODE, HTML o PHP:
* {
color: red;
}

Va a ponerle color rojo a TODOS los elementos.

otro:
Insertar CODE, HTML o PHP:
.contenedor * {
  background-color: red;
}

Va a aplicarle color de fondo rojo a todos los hijos de ".contenedor"
(Hay un espacio entre .contenedor y *, eso es un selector de hijos, osea los hijos de .contenedor)

Mientras algo como
Insertar CODE, HTML o PHP:
.contenedor h3 {
  background-color: red;
}
solo pondria fondo rojo a los hijos h3 de contenedor, usando el wildcard estas diciendo que TODOS los hijos de .contenedor deberían tener las mismas propiedades que ahí definís.

Tu codigo original:

Insertar CODE, HTML o PHP:
.collapse > * + *{
  display:none;
}
.collapse > *{
  cursor:pointer;
}
.collapse:focus{
  outline:none;
}
.collapse:focus > * + *{
  display:block; 
}

La primera declaración se aplica a los hermanos (cualquiera sea el tag de esos hermanos, por el wildcard) de los primeros hijos (cualquiera sea el tag de los hijos, sea h1, h2, h3, p, a, lo que venga) de .collapse.
( ">" es el selector de hijos directos, y "+" es selector de hermanos)

la segunda declaración aplica cursor:pointer a todos los primeros hijos de .collapse, sea cual sea el tag. Por eso, fíjate en el ejemplo que te deje donde uso wildcards, que "información de usuario" también tiene cursor:pointer. Porque es un primer hijo de .collapse, si solo queres que el cursor:pointer se aplique a "mostrar información" tendrias que ser mas especifico en la declaración; osea, en vez de usar un wildcard (*) especifica el tag (en este caso, h2) - Fijate en el ejemplo que te deje sin uso de wildcards, el cursor no esta con puntero cuando lo pones sobre "información de usuario".


¿Entendés?

Cualquier duda pregunta.
 

deskpro123

Iota
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
5 Jun 2012
Mensajes
2.014
Pero ahí estas usando Javascript, y me parece que deskpro no quiere usar JS.



Si, las wildcards son los asteriscos.

Cuando las usas, el sitio va a aplicar el estilo a todos los elementos que correspondan.

Por ejemplo:

Insertar CODE, HTML o PHP:
* {
color: red;
}

Va a ponerle color rojo a TODOS los elementos.

otro:
Insertar CODE, HTML o PHP:
.contenedor * {
  background-color: red;
}

Va a aplicarle color de fondo rojo a todos los hijos de ".contenedor"
(Hay un espacio entre .contenedor y *, eso es un selector de hijos, osea los hijos de .contenedor)

Mientras algo como
Insertar CODE, HTML o PHP:
.contenedor h3 {
  background-color: red;
}
solo pondria fondo rojo a los hijos h3 de contenedor, usando el wildcard estas diciendo que TODOS los hijos de .contenedor deberían tener las mismas propiedades que ahí definís.

Tu codigo original:

Insertar CODE, HTML o PHP:
.collapse > * + *{
  display:none;
}
.collapse > *{
  cursor:pointer;
}
.collapse:focus{
  outline:none;
}
.collapse:focus > * + *{
  display:block; 
}

La primera declaración se aplica a los hermanos (cualquiera sea el tag de esos hermanos, por el wildcard) de los primeros hijos (cualquiera sea el tag de los hijos, sea h1, h2, h3, p, a, lo que venga) de .collapse.
( ">" es el selector de hijos directos, y "+" es selector de hermanos)

la segunda declaración aplica cursor:pointer a todos los primeros hijos de .collapse, sea cual sea el tag. Por eso, fíjate en el ejemplo que te deje donde uso wildcards, que "información de usuario" también tiene cursor:pointer. Porque es un primer hijo de .collapse, si solo queres que el cursor:pointer se aplique a "mostrar información" tendrias que ser mas especifico en la declaración; osea, en vez de usar un wildcard (*) especifica el tag (en este caso, h2) - Fijate en el ejemplo que te deje sin uso de wildcards, el cursor no esta con puntero cuando lo pones sobre "información de usuario".


¿Entendés?

Cualquier duda pregunta.

Wow muchisimas gracias amigo, es algo nuevo que servira bastante con todos los css que hago a diario, yo se maquetar un diseno en css completo sin problemas resposive, pero me faltan cosas mas avanzadas por saber como esa :D

Si sabes hacer templates CSS te recomiendo que llegues al nivel suficiente para poder estar en el area de negocios y poder ganar buen dinero con tus disenos.

Un saludo y gracias de nuevo :D
 

jazhiel

Beta
Social Media
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
25 Feb 2011
Mensajes
58
Ocultar y mostrar divs, lo mas facil seria con : onlick -> set Style -> visibility:hidden / display:none;
 
Arriba