Jak stworzyć: drzewo widokowe

Naucz się, jak używać CSS i JavaScript do tworzenia drzewa widokowego.

Drzewo widokowe

Drzewo widokowe reprezentuje widok hierarchiczny informacji, gdzie każdy element może mieć wiele podpunktów.

Kliknij strzałkę, aby otworzyć lub zamknąć gałąź drzewa.

  • Napoj
    • Woda
    • Kawa
    • Herbata
      • Herbata czarna
      • Herbata biała
      • Herbata zielona
        • Sencha
        • Gyokuro
        • Matcha
        • Pi Lo Chun

Spróbuj sam

Drzewo widokowe

Krok 1 - Dodaj HTML:

<ul id="myUL">
  <li><span class="caret">Napoje</span>
    <ul class="nested">
      <li>Woda</li>
      <li>Kawa</li>
      <li><span class="caret">Herbata</span>
        <ul class="nested">
          <li>Herbata czarna</li>
          <li>Herbata biała</li>
          <li><span class="caret">Herbata zielona</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>

Drugi krok - Dodaj CSS:

/* Usuń domyślną listę punktową */
ul, #myUL {
  list-style-type: none;
}
/* Usuń marginesy zewnętrzne i wewnętrzne z ul nadrzędnego */
#myUL {
  margin: 0;
  padding: 0;
}
/* Ustaw styl caret/strzałki */
.caret {
  cursor: pointer;
  user-select: none; /* Zapobiegaj wybieraniu tekstu */
}
/* Użyj unicode do stworzenia caret/strzałki i ustaw jej styl */
.caret::before {
  content: "\25B6";
  color: black;
  display: inline-block;
  margin-right: 6px;
}
/* Kiedy klikniesz na ikonę caret/strzałki, obróć ją (używając JavaScript) */
.caret-down::before {
  transform: rotate(90deg);
}
/* Ukryj listę zagnieżdżoną */
.nested {
  display: none;
}
/* Kiedy użytkownik kliknie caret/strzałkę, wyświetl listę zagnieżdżoną (używając JavaScript) */
.active {
  display: block;
}

Trzeci krok - Dodaj 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("caretdown");
  });
}

Spróbuj sam

Rozwijany widok drzewa

W tym przykładzie używamy 'skrzynki do głosowania' unicode zamiast caret:

Przykład

Spróbuj sam