Vårstäda din webbplats: Expanderbart innehåll

När våren kommer passar många på att storstäda hemma. Vi delar med oss av några tips på hur du kan ge din webbplats en vårstädning genom att gno bort gammal JavaScript-kod och ersätta den med putsade, moderna standardlösningar.

Expanderbart innehåll

Kärt barn har många namn: Dragspelsmeny, expanderbar panel, collapse, discolosure. Att kunna visa och dölja innehåll kan ha stora fördelar. Framför allt kan det underlätta för användare som navigerar med tangentbord då det blir enklare att navigera om det går att fälla ihop innehåll som inte är intressant.

Expanderbart innehåll kan i dag till stor del lösas med HTML:s Details-element. Genom att använda detta standardelement skapas en utfällbar sektion som fälls ut när användaren trycker på elementets ”rubriktext”, som skapas med Summary-elementet. Detta utan en enda rad JavaScript-kod. Dessutom får vi alla nödvändiga tillgänglighetsfunktioner på köpet: Det fungerar med tangentbordsnavigation, existerande fokusmarkering, roll och tillstånd som kan förmedlas av hjälpmedel. En skärmläsare kan förklara för användare som inte ser gränssnittet att innehållet går att fälla ut samt om det är utfällt eller ej för tillfället.

En ytterligare fördel är att det går att söka i det hopfällda innehållet med webbläsarens sökfunktion och innehållet fälls då ut.

Exempel på Details

<details>
  <summary>Produktbeskrivning</summary>
  <p>Beskrivning av produkten…</p>
</details>

Här är ett details-element vars text innehåller namnet på vanliga vårblommor. Testa att söka på en vårblomma och se om innehållet fälls ut.

Vanliga vårblommor

Snödroppar, Tussilago, Vitsippa, Blåsippa, Krokus, Tulpan.

Presentationen kan enkelt ändras med CSS och details kan då t.ex användas för att skapa en dropdown-meny eller en utfällbar navigationsmeny. Obs! En sådan dropdown ska inte användas för utfällbara listor i formulär. Där bör istället Select eller Data-list användas.

Details bör endast användas när innehållet som fälls ut kommer direkt efter det som fäller ut. Om innehållet fälls ut på en annan plats är det förmodligen Dialog eller Popover som ska användas.

För att skapa en dragspelsmeny, där endast ett innehåll är utfällt åt gången, anges ett name-attributdetails-elementet. Alla details-element som har samma värde är då sammankopplade och så fort ett details-element fälls ut kommer andra innehåll med samma värde att fällas ihop.

Exempel på dragspelsmeny

<details name="questions">
  <summary>Frågor om frakt</summary>
  <p>...</p>
</details>
<details name="questions">
  <summary>Frågor om retur</summary>
  <p>...</p>
</details>

Se fler exempel i vår demo på CodePen.

Webbläsarstöd

Details-elementet har haft stöd i alla webbläsare i många år. Om webbläsaren mot förmodan inte skulle ha stöd för Details så kommer innehållet att visas som utfällt eftersom webbläsaren inte känner till vad den ska göra med ett details-element. Användaren kan alltså ta del av innehållet, men det går inte att fälla ihop.

Du hittar fler tips i artikelserien Vårstäda din webbplats.

Publicerad:
Andreas Nylin, porträtt

Andreas Nylin

Senior gränssnittsutvecklare och tillgänglighetsexpert