Los últimos tutoriales de desarrollo web
 

W3.CSS acordeones


Acordeón

Un acordeón se utiliza para mostrar (y ocultar) el contenido que se divide en secciones.

Haga clic en los botones "sección abierta" a continuación para ver cómo funciona:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed no eiusmod tempor ut labore et dolore incididunt magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Acordeón con imágenes:

Trolltunga, Noruega

La clase W3-acordeón define un acordeón, y la clase W3-acordeón contenido define la parte que se mostrará:

Ejemplo

<div class="w3-accordion w3-light-grey">
  <button onclick="myFunction('Demo1')" class="w3-btn-block w3-left-align">
    Open Section 1
  </button>
  <div id="Demo1" class="w3-accordion-content w3-container">
    <p>Some text..</p>
  </div>
  <button onclick="myFunction('Demo2')" class="w3-btn-block w3-left-align">
    Open Section 2
  </button>
  <div id="Demo2" class="w3-accordion-content w3-container">
    <p>Some text..</p>
  </div>
</div>

<script>
function myFunction(id) {
    var x = document.getElementById(id);
    if (x.className.indexOf("w3-show") == -1) {
        x.className += " w3-show";
    } else {
        x.className = x.className.replace(" w3-show", "");
    }
}
</script>

Inténtalo tú mismo "

Tanto el elemento que se utiliza para abrir el acordeón y el contenido del acordeón puede ser cualquier elemento HTML.


Acordeón desplegable vs.

La siguiente lista muestra la diferencia entre un acordeón y un menú desplegable:

acordeones

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed no eiusmod tempor ut labore et dolore incididunt magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.


  • El contenido es 100% de ancho (se extiende por toda la anchura del elemento padre)
  • Cuando está abierto, empuja el contenido de la página hacia abajo, en su caso (position: relative)
  • A menudo se utiliza para "abrir" múltiples secciones

Listas deplegables

  • El contenido es mínimo 160px de ancho y más si es necesario
  • Cuando se abre, se pone sobre el contenido de la página (position: absolute)
  • A menudo se utiliza una sección de "abrir"

Botones de acordeón

Se puede utilizar cualquier elemento HTML para abrir el contenido de acordeón. Preferimos un botón con una clase w3-btn-bloque, ya que se extiende por toda la anchura de su elemento padre, al igual que el contenido de acordeón (100% anchura). Recuerde que los botones en W3.CSS se centran de forma predeterminada. Utilice la clase W3-izquierda-align si desea que la izquierda en vez. Sin embargo, usted no tiene que seguir nuestro enfoque - un acordeón se verá bien en ambos sentidos:

Vestibulum ...

Vestibulum ...

Centrada en los contenidos, así!

Ejemplo

<div class="w3-accordion w3-light-grey">
  <button onclick="myFunc('Demo1')" class="w3-btn">
    Normal button
  </button>
  <div id="Demo1" class="w3-accordion-content">
    <p>Lorem ipsum...</p>
  </div>
  <button onclick="myFunc('Demo2')" class="w3-btn-block w3-left-align w3-green">
    Left aligned & full-width
  </button>
  <div id="Demo2" class="w3-accordion-content">
    <p>Lorem ipsum...</p>
  </div>
  <button onclick="myFunc('Demo3')" class="w3-btn-block w3-red">
  Centered & full-width
  </button>
  <div id="Demo3" class="w3-accordion-content w3-center">
    <p>Centered content as well!</p>
  </div>
</div>

Inténtalo tú mismo "


Acordeón activos Botones

El uso de JavaScript para resaltar acordeones que están abiertos (clic en):

Algún texto..

Un texto diferente ..

Ejemplo

// Add the w3-red class to all opened accordions
var x = document.getElementById(id);
if (x.className.indexOf("w3-show") == -1) {
  x.className += " w3-show";
  x.previousElementSibling.className += " w3-red";
} else {
  x.className = x.className.replace("w3-show", "");
  x.previousElementSibling.className =
  x.previousElementSibling.className.replace("w3-red", "");
}

Inténtalo tú mismo "


Ancho de acordeón

Por defecto, la anchura de un acordeón es 100%. Para anular este, cambie la propiedad CSS anchura del contenedor w3-acordeón:

Algún texto..

Algún texto..

Algún texto..

Algún texto..

Ejemplo

<div class="w3-accordion w3-light-grey" style="width:50%">
  <button onclick="myFunction('Demo1')" class="w3-btn-block">
    50%
  </button>
  <div id="Demo1" class="w3-accordion-content">
    <p>Some text..</p>
  </div>
</div>

Inténtalo tú mismo "


contenido del acordeón

Acordeón con los enlaces:

Ejemplo

<div class="w3-accordion w3-light-grey">
  <button onclick="myFunction('Demo1')" class="w3-btn-block w3-left-align">
    Accordion
  </button>
  <div id="Demo1" class="w3-accordion-content">
    <a href="#">Link 1</a>
    <a href="#">Link 2</a>
    <a href="#">Link 3</a>
  </div>
</div>

Inténtalo tú mismo "

Acordeón como una tarjeta con las listas:
  • Jill
  • Víspera
  • Adán

Ejemplo

<div class="w3-accordion w3-card-4">
  <button onclick="myFunction('Demo1')" class="w3-btn-block w3-left-align">
    Accordion
  </button>
  <div id="Demo1" class="w3-accordion-content">
    <ul class="w3-ul">
      <li>Jill</li>
      <li>Eve</li>
      <li>Adam</li>
    </ul>
  </div>
</div>

Inténtalo tú mismo "

Acordeón dentro de un Sidenav(Nota: usted aprenderá más sobre las navegaciones secundarios más adelante):

Ejemplo

<nav class="w3-sidenav w3-light-grey w3-card-2" style="width:200px;">
  <a href="#">Link</a>
  <div class="w3-accordion">
    <a onclick="myAccFunc()" href="#">Accordion</a>
    <div id="demoAcc" class="w3-accordion-content w3-white w3-card-4">
      <a href="#">Link 1</a>
      <a href="#">Link 2</a>
      <a href="#">Link 3</a>
    </div>
  </div>
  <div class="w3-dropdown-click">
    <a onclick="myDropFunc()" href="#">Dropdown</a>
    <div id="demoDrop" class="w3-dropdown-content w3-white w3-card-4">
      <a href="#">Link 1</a>
      <a href="#">Link 2</a>
      <a href="#">Link 3</a>
    </div>
  </div>
  <a href="#">Link</a>
  <a href="#">Link</a>
</nav>

Inténtalo tú mismo "


acordeones animados

Utilice cualquiera de las clases w3-animate- a desvanecerse, el zoom o deslizarse en el contenido de acordeón:

Ejemplo

<div id="Demo1" class="w3-accordion-content w3-animate-zoom">

Inténtalo tú mismo "