Un acordeón no es mucho más que una serie de enlaces que nos permiten mostrar y ocultar contenidos de tal manera que sólo uno de ellos es visible; cuando se muestra el seleccionado, los demás se ocultan y de ese modo, el espacio utilizado se optimiza.
Hay muchos métodos para crear esto y este sólo es una demostración del concepto básico.
<div id="demoA">
<a onclick="demoacordeon('primero');" href="javascript:void(0);">primero</a>
<div id="primero" class="visible">
<p> ....... el contenido ....... </p>
</div>
<a onclick="demoacordeon('segundo');" href="javascript:void(0);">segundo</a>
<div id="segundo" class="novisible">
<p> ....... el contenido ....... </p>
</div>
<a onclick="demoacordeon('tercero');" href="javascript:void(0);">tercero</a>
<div id="tercero" class="novisible">
<p> ....... el contenido ....... </p>
</div>
</div>
<script>
//<![CDATA[
var abierto = "primero"; // definimos el que estará abierto
function demoacordeon(cual) {
var mostrar = document.getElementById(cual); // el que vamos a mostrar
var actual = document.getElementById(abierto); // el que vamos a ocultar
if(mostrar==actual) {return false;} // si es el mismo no hacemos nada
// permutamos sus clases
actual.className="novisible";
mostrar.className="visible";
abierto = cual; // guardamos el que está abierto
}
//]]>
</script>
<style>
#demoA { /* al div contenedor lo dimensionamos y centramos */
margin: 0 auto;
width: 500px;
}
#demoA a { /* establecemos las propeidades de los enlaces o botones */
background-color: #456;
box-shadow: 0 0 4px #ABC inset;
display: block;
font-size: 16px;
height: 2em;
line-height: 2em;
margin: 1px 0;
padding-left: 20px;
}
#demoA a:hover {
box-shadow: 0 0 12px #ABC inset;
color: #EEE;
}
#demoA div { /* los contenidos */
overflow:hidden;
text-align: center;
/* cada cambio se realizará con un efecto animado ¨*/
-moz-transition: all 1s ease-in-out;
-webkit-transition: all 1s ease-in-out;
-o-transition: all 1s ease-in-out;
transition: all 1s ease-in-out;
}
#demoA div.visible {
/* el visible tiene borde y una cierta altura */
border: 1px solid #456;
height:100px;
}
#demoA div.novisible {
/* el oculto no tiene borde y su altura es cero */
border: 1px solid transparent;
height:0px;
}
</style>
Proin consequat, justo quis ultrices vestibulum, lorem mi porttitor justo, et tristique magna ipsum sit amet ligula. Aliquam ante libero, imperdiet a sollicitudin commodo, iaculis at nunc? Proin luctus, diam nec semper ultrices, purus quam accumsan purus, ac sodales nunc odio in tellus.
Proin consequat, justo quis ultrices vestibulum, lorem mi porttitor justo, et tristique magna ipsum sit amet ligula. Aliquam ante libero, imperdiet a sollicitudin commodo, iaculis at nunc? Proin luctus, diam nec semper ultrices, purus quam accumsan purus, ac sodales nunc odio in tellus.
Suspendisse a ipsum nisi. Vestibulum a sapien sem, eu ultricies tellus. Vestibulum arcu diam, varius in malesuada ut, lacinia nec turpis. Aliquam erat volutpat. Duis vitae magna at nunc ornare facilisis quis eu augue. Curabitur ut urna nulla! Donec in enim ac ligula malesuada cursus.
No hay comentarios:
Publicar un comentario