Hur skapar man: Trädvy

Lär dig hur du skapar trädvyer med CSS och JavaScript.

Trädvy

Trädvy visar en hierarkisk vy av information, där varje objekt kan ha flera underobjekt.

Klicka på pilen för att öppna eller stänga trädgrenen.

  • Drycker
    • Vatten
    • Kaffe
    • Te
      • Svart te
      • Vit te
      • Grön te
        • Sencha
        • Gyokuro
        • Matcha
        • Pi Lo Chun

Prova själv

Trädvy

Steget 1 - Lägg till 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>

Andra steg - Lägg till CSS:

/* Ta bort standardpunkter */
ul, #myUL {
  list-style-type: none;
}
/* Ta bort utrymme och inre marginaler från förälders ul */
#myUL {
  margin: 0;
  padding: 0;
}
/* Ställ in caret/pilens stil */
.caret {
  cursor: pointer;
  user-select: none; /* Förhindra textval */
}
/* Använd unicode för att skapa caret/pil och ställ in dess stil */
.caret::before {
  content: "\25B6";
  color: black;
  display: inline-block;
  margin-right: 6px;
}
/* När klickar på caret/pilikonen, rotera den (använd JavaScript) */
.caret-down::before {
  transform: rotate(90deg);
}
/* Dölj nästlade listor */
.nested {
  display: none;
}
/* När användaren klickar på caret/pil, visa nästlade listor (använd JavaScript) */
.active {
  display: block;
}

Tredje steg - Lägg till 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 själv

Kryssruta-tre visning

I detta exempel använder vi en "röstbok" unicode istället för caret:

Exempel

Prova själv