Primero debemos de tener nuestra esturara HTML donde existirá un botón que activara una función JavaScript que hará el cambio del CSS para mostrar el efecto.
<div id="boton" onclick="divLogin()">
Mostrar/Ocultar
</div>
<div id="caja">
</div>
Después de tener estos dos div utilice algo de CSS3 para darle el diseño y logar el efecto de transición.
#boton{
padding: 10px;
background: orange;
width: 95px;
cursor: pointer;
margin-top: 10px;
margin-bottom: 10px;
box-shadow: 0px 0px 1px #000;
display: inline-block;
}
#boton:hover{
opacity: .8;
}
#caja{
width: 100%;
margin: auto;
height: 0px;
background: #000;
box-shadow: 10px 10px 3px #D8D8D8;
transition: height .4s;
}
Vamos a centrarnos en las propiedades que son necesarias para el ejemplo, tenemos un div con un id #caja, este div sera el que se ocultara y mostrara cada vez que demos un clic al div con el id #boton, vemos que el div caja tiene un width: 100%; esto significa que tiene el 100% del ancho y un height: 0px;este es el alto, tiene como valor inicial 0px esto significa que no tiene tamaño por eso no es visible al principio.
Notamos en el div botón esta parte onclick=”divLogin()”, esto ara que cada vez que le demos un clic a ese div se active la función JavaScript divLogin() que les mostrare mas adelante, lo que hará esta función es que cuando se corra cambiara la propiedad height: 0px; del div caja por height: 100px; haciendo que sea visible el div.
Si nosotros agregamos la propiedad de transición al div caja“transition: height .4s;” haremos que el cambio de 0px a 100px se retarde .4s logrando un bonito efecto.
var clic = 1;
function divLogin(){
if(clic==1){
document.getElementById("caja").style.height = "100px";
clic = clic + 1;
} else{
document.getElementById("caja").style.height = "0px";
clic = 1;
}
}
En esta parte yo me las he ingeniado para que en el primer clic el div apareciera y se mantuviera hasta que diera otro clic, para esto utilice un if que les explico a continuación;
En la primer linea de código declaramos una variable global clic, notamos que a esta misma le dimos el valor de 1, cuando damos clic el if preguntasi la variable clic es igual a 1 entonces cambia el height a 100px para mostrar el div, justo después de hacer esto le suma un 1 a la variable clic “clic = clic + 1;”
<blockquote>Recuerdan que en el primer clic le sumamos un 1 a la variable clic, ahora cuando demos otro clic el if preguntara lo mismo pero en este caso la variable clic ya no vale 1 si no 2 entonces se ejecutara la opción falso del if que es la que regresa a 0px el alto escondiendo de nuevo el div caja, justo después notamos que regresamos a su valor original la variable clic clic = 1;, esto ara que todo empiece de nuevo
<blockquote>Si no murieron a tratar de entender el ejemplo anterior pasemos al segundo ejemplo, mucho mas sencillo.
En esta ocasión tenemos los mismos div con las mismas propiedades CSS;
<div id="boton" onclick="divLogin()">
Mostrar/Ocultar
</div>
<div id="caja">
</div>
#boton{
padding: 10px;
background: orange;
width: 95px;
cursor: pointer;
margin-top: 10px;
margin-bottom: 10px;
box-shadow: 0px 0px 1px #000;
display: inline-block;
}
#boton:hover{
opacity: .8;
}
#caja{
width: 100%;
margin: auto;
height: 0px;
background: #000;
box-shadow: 10px 10px 3px #D8D8D8;
transition: height .4s;
}
Ahora lo que aremos es agregar los 100pxal alto cuando pase el puntero por encima, para esto utilizamos la propiedad hover sobre el div botón, notamos que ya tenemos esta linea de código CSS;
#boton:hover{
opacity: .8;
}
Pero solo le agrega opacity: .8; que es transparencia, lo que tenemos que hacer es agregarle el alto, pero no al mismo div botón si no a la caja, para esto colocamos el siguiente código;
#boton:hover + #caja{
height: 100px;
}
El código dice, cuando pases por el div boton “#boton:hover” cambia en el div caja “#caja” el alto a 100px “height: 100px;”.
Así de simple agregamos este efecto con CSS.
Hola, tengo una duda y es:
tengo un un div class=tarjetastl y dentro de este tengo: div=img y div=boton mi pregunta es al hacer clik sobre el div boton puedo cambiar el div imagen y como
Como puedo hacer el primer ejemplo con diferentes div? Necesito que aparezcan y desaparezcan diferentes div al hacer diferentes clic en diferentes sitios. Ejemplo:
var clic = 1; function divLogin(){ if(clic==1){ document.getElementById("prueba1").style.height = "auto"; document.getElementById("prueba2").style.display = "none"; document.getElementById("prueba3").style.display = "none"; clic = clic + 1; } else{ document.getElementById("prueba1").style.display = "none"; document.getElementById("prueba3").style.display = "none"; clic = 1; } }``` No se si me explico
Hola compañero!
‘esturara’ significa ‘estructura’, ¿cierto? ¿Quiźas está bien escrito así? xD
si no, asumo que el string correcto es: ‘Primero debemos de tener nuestra estructura HTML donde existirá un botón que activara una función JavaScript que hará el cambio del CSS para mostrar el efecto.’
Gracias por el aporte!
Brother, gracias, tenia algo pensado asi pero tenia mal la sintaxis :V , con esto me ayudo a colocar como es 😄 (Y) te felicito bro, gracias por la ayuda
Vaya vaya… llegue a este ejemplo solo por un error tipográfico del redactor, que escribió hará y haremos sin H…
Igualmente el ejemplo esta bueno y bien explicado 😃
Saludos!!!