Come creare: vista ad albero

Impara come creare una vista ad albero utilizzando CSS e JavaScript.

Vista ad albero

La vista ad albero rappresenta una vista gerarchica delle informazioni, dove ogni elemento può avere più sottoelementi.

Clicca sull'freccia per aprire o chiudere la ramo dell'albero.

  • Bibite
    • Acqua
    • Caffè
      • Tè nero
      • Tè bianco
      • Tè verde
        • Sencha
        • Gyokuro
        • Matcha
        • Pi Lo Chun

Prova da solo

Vista ad albero

Passo 1 - Aggiungi HTML:

<ul id="myUL">
  <li><span class="caret">Beverages</span>
    <ul class="nested">
      <li>Water</li>
      <li>Coffee</li>
      <li><span class="caret">Tea</span>
        <ul class="nested">
          <li>Black Tea</li>
          <li>White Tea</li>
          <li><span class="caret">Green Tea</span>
            <ul class="nested">
              <li>Sencha</li>
              <li>Gyokuro</li>
              <li>Matcha</li>
              <li>Pi Lo Chun</li>
            </ul>
          </li>
        </ul>
      </li>
    </ul>
  </li>
</ul>

Passo 2 - Aggiungi CSS:

/* Rimuove la lista di elenchi predefinita */
ul, #myUL {
  list-style-type: none;
}
/* Rimuove i margini esterni e interni del ul superiore */
#myUL {
  margin: 0;
  padding: 0;
}
/* Imposta lo stile del caret/freccia */
.caret {
  cursor: pointer;
  user-select: none; /* Evita la selezione del testo */
}
/* Utilizza unicode per creare caret/freccia e imposta lo stile */
.caret::before {
  content: "\25B6";
  color: black;
  display: inline-block;
  margin-right: 6px;
}
/* Quando si clicca sull'icona caret/freccia, ruota essa (utilizzando JavaScript) */
.caret-down::before {
  transform: rotate(90deg);
}
/* Nasconde l'elenco nidificato */
.nested {
  display: none;
}
/* Quando l'utente clicca su caret/freccia, visualizza l'elenco nidificato (utilizzando JavaScript) */
.active {
  display: block;
}

Passo 3 - Aggiungi JavaScript:

var toggler = document.getElementsByClassName("caret");
var i;
for (i = 0; i < toggler.length; i++) {
  toggler[i].addEventListener("click", function() {
    this.parentElement.querySelector(".nested").classList.toggle("active");
    this.classList.toggle("caret-down");
  });
}

Prova da solo

Casella a selezione a albero

In questo esempio, utilizziamo un'unicode ' urna ' invece di caret:

Esempio

Prova da solo