treeitem
Merkitsee elementin yhdeksi kohteeksi puun sisällä. Treeitem voi olla laajennettava (lisää treeitem-kohteiden vanhempi) tai päätteinen (lehti). Käytä vain rakennettaessa hierarkkista selainta — tiedostoselain, organisaatiokaavio, sisäkkäiset kategoriat — joka tarvitsee yhden sarkainpysähdyksen nuolinäppäinnavigoinnin.
Milloin käyttää
role="tree" -elementin sisällä, jokaiselle näkyvälle solmulle. Jos solmulla on lapsia, aseta aria-expanded="true" tai "false" ja sisällytä tai omista role="group" -elementti, joka sisältää lapsi-treeitem-kohteet. Jos solmulla ei ole lapsia, jätä aria-expanded kokonaan pois (ÄLÄ aseta sitä arvoon "false" lehdellä — se ilmoittaa “kutistettu” ilman mitään laajennettavaa).
Aseta aria-level (1-indeksoitu syvyys), aria-posinset (sijainti sisarusten joukossa, 1-indeksoitu) ja aria-setsize (sisarusten kokonaismäärä) jokaiselle treeitem-kohteelle, kun visuaalista sisäkkäisyyttä ei voi päätellä DOM-hierarkiasta.
Navigointiin, joka on todellisuudessa vain “lista linkkejä sisäkkäisine alalinkkeineen”, <nav> sisäkkäisten <ul>- ja <a>-elementtien kanssa on parempi valinta. Käytä puunäkymää vain, kun kokemus on yksi sarkainpysähdyksen hierarkkinen selain.
Näppäimistö- ja kohdistussopimus
APG treeview -mallin mukaan:
- Sarkain siirtää kohdistuksen puuhun, nykyiselle treeitem-kohteelle; Sarkain siirtää kohdistuksen ulos.
- Ylös/Alas-nuolet siirtävät kohdistusta näkyvien solmujen välillä (ohittaen kutistetut lapset).
- Oikea nuoli: jos solmu on kutistettu, laajenna se; jos laajennettu, siirry ensimmäiseen lapseen.
- Vasen nuoli: jos solmu on laajennettu, kutista se; jos kutistettu, siirry vanhempaan.
- Home / End siirtää ensimmäiseen / viimeiseen näkyvään solmuun.
- Enter tai Välilyönti aktivoi (valitsee) nykyisen kohteen.
- Pikakirjoitus: kirjaimen kirjoittaminen siirtää kohdistuksen seuraavaan vastaavaan näkyvään solmuun.
Yleiset virheet
aria-expanded="false"lehtisolmulla — ilmoittaa kuvitteellisen kutistettavan tilan.- Jokaisella treeitem-kohteella on
tabindex="0". Malli on yksi sarkainpysähdys; vain kohdistuneella kohteella ontabindex="0". - Oikea/Vasen nuoli käytetään “seuraavaan sisareen / edelliseen sisareen” siirtymiseen laajentamisen/kutistamisen sijaan.
- Lapsi-treeitem-kohteet sijoitetaan suoraan vanhemman
<li>-elementin sisään ilman koostavaarole="group"-elementtiä. Ruudunlukuohjelmat eivät voi ilmoittaa ryhmää kokonaisuutena. - Puuttuva
aria-level, kun DOM on tasainen (esimerkiksi kun puu renderöidään absoluuttisella sijoittelulla).
Esimerkki
<ul role="tree" aria-label="Files">
<li role="treeitem" aria-expanded="true" tabindex="0">
Documents
<ul role="group">
<li role="treeitem" tabindex="-1">Resume.pdf</li>
<li role="treeitem" aria-expanded="false" tabindex="-1">
Photos
<ul role="group">
<li role="treeitem" tabindex="-1">2025-summer.jpg</li>
</ul>
</li>
</ul>
</li>
<li role="treeitem" tabindex="-1">Downloads</li>
</ul>