23/10/2023
I den moderne webudvikling er brugervenlighed og en overskuelig brugerflade afgørende for at fastholde besøgende. Ingen ønsker at blive overvældet af for meget information på én gang. Her kommer front-end frameworks som Bootstrap 5 til undsætning, da de tilbyder robuste løsninger til at skabe responsive og visuelt tiltalende hjemmesider hurtigt og effektivt. En af de mest værdifulde funktioner i Bootstrap 5 til at opnå dette er Collapse-komponenten.

Collapse er en alsidig komponent, der giver dig mulighed for at skifte synligheden af indhold på tværs af dit projekt med blot et par klasser og Bootstrap's indbyggede JavaScript-plugins. Det er den perfekte løsning, når du ønsker at præsentere meget information uden at overfylde skærmen, såsom i FAQ-sektioner, navigationsmenuer eller detaljerede produktbeskrivelser.
Hvad er Bootstrap 5 Collapse?
Kort sagt er Bootstrap 5's Collapse-komponent designet til at vise og skjule indhold. Forestil dig en sektion af tekst eller en hel blok af elementer, der kan foldes sammen og ud igen. Dette opnås gennem en elegant animation, hvor højden af elementet skifter fra sin nuværende værdi til nul, når det skjules, og omvendt når det vises.
Det er vigtigt at bemærke, at Bootstrap's implementering af Collapse håndterer animationen af højden. Dette betyder, at du ikke bør anvende padding direkte på et `.collapse`-element. Hvis du har brug for padding, bør du i stedet bruge en uafhængig indpaknings-element (wrapper-element) omkring indholdet inden i det kollapsbare element. Dette sikrer, at animationen forbliver flydende og uden hakken.
De grundlæggende klasser
Collapse-komponenten benytter sig af nogle få centrale klasser til at håndtere funktionaliteten:
.collapse: Denne klasse sikrer, at indholdet initialt er skjult for brugeren. Det er standardtilstanden for et kollapsbart element..collapsing: Denne klasse tilføjes automatisk, når overgangen (animationen) starter, og fjernes igen, når den er afsluttet. Den håndterer selve overgangs-effekten..collapse.show: Denne kombination af klasser indikerer, at indholdet er synligt. Hvis du ønsker, at et kollapsbart element skal være åbent som standard ved indlæsning af siden, skal du tilføje.show-klassen til.collapse-elementet.
Sådan implementeres Collapse
Der er primært to måder at implementere Collapse-funktionaliteten på: via dataattributter i HTML eller via JavaScript.
Implementering via dataattributter
Den mest ligetil måde at bruge Collapse på er ved at tilføje specifikke dataattributter direkte til dine HTML-elementer. Dette kræver ingen brugerdefineret JavaScript-kode.
Du skal blot tilføje data-bs-toggle="collapse" til det element, der skal fungere som udløser (f.eks. en knap eller et link). Dernæst skal du bruge data-bs-target-attributten til at pege på det element, der skal kollapses. Dette kan være et ID-selector (f.eks. #mitIndhold) eller en CSS-klasse (f.eks. .mineKollapsbareElementer).
Eksempel (konceptuelt):<button data-bs-toggle="collapse" data-bs-target="#mitIndhold">Klik for at folde ud</button><div class="collapse" id="mitIndhold"><div class="kort kort-body">Dette er det kollapsbare indhold.</div></div>
Du kan også bruge et link (<a>) som udløser ved at tilføje href-attributten i stedet for data-bs-target og huske role="button" for semantisk korrekthed og tilgængelighed.
Kollaps af flere elementer
En enkelt knap eller et link kan vise og skjule flere elementer ved at referere til dem med en selector i dens href eller data-bs-target-attribut. Omvendt kan flere knapper eller links vise og skjule et enkelt element, hvis de hver især refererer til det med deres href eller data-bs-target-attribut.

Accordion-lignende adfærd
For at opnå en accordion-effekt, hvor kun ét element i en gruppe er åbent ad gangen (som i en FAQ-sektion), skal du tilføje data-bs-parent="#selector"-attributten til det kollapsbare område. Selectoren skal pege på forælder-elementet, der indeholder alle de kollapsbare elementer i gruppen.
Implementering via JavaScript
For mere avanceret kontrol eller dynamisk manipulation kan du aktivere Collapse-funktionaliteten manuelt via JavaScript API'en. Dette giver dig fuld kontrol over elementernes tilstand.
Du kan oprette en Collapse-instans med konstruktøren:
var mitKollapsElement = document.getElementById('mitKollaps');var bsKollaps = new bootstrap.Collapse(mitKollapsElement, { toggle: false });
Dette giver dig mulighed for at styre Collapse-komponenten via metoder.
Indstillinger (Options)
Indstillinger kan sendes via dataattributter eller JavaScript-objekter. For dataattributter tilføjes indstillingsnavnet til data-bs-, som i data-bs-parent="".
| Indstilling | Type | Standard | Beskrivelse |
|---|---|---|---|
parent | selector | false | Hvis angivet, lukkes alle andre kollapsbare elementer under den specificerede forælder, når dette element vises. |
toggle | boolean | true | Skifter kollapsbart element ved aktivering. |
Metoder (Methods)
Alle API-metoder er asynkrone og starter en overgang. De returnerer til kaldet, så snart overgangen er startet, men før den slutter. Derudover ignoreres et metodekald på en komponent, der er i gang med en overgang.
| Metode | Beskrivelse |
|---|---|
toggle() | Skifter et kollapsbart element til vist eller skjult. |
show() | Viser et kollapsbart element. |
hide() | Skjuler et kollapsbart element. |
dispose() | Ødelægger et elements Collapse-instans (fjerner gemte data på DOM-elementet). |
getInstance() | Statisk metode, der giver dig mulighed for at få den Collapse-instans, der er knyttet til et DOM-element. |
getOrCreateInstance() | Statisk metode, der returnerer en Collapse-instans knyttet til et DOM-element eller opretter en ny, hvis den ikke var initialiseret. |
Begivenheder (Events)
Bootstrap's Collapse-klasse udsætter et par begivenheder for at hooke ind i Collapse-funktionaliteten, hvilket er nyttigt for at udføre handlinger, når et element kollapses eller udvides.
show.bs.collapse: Denne begivenhed udløses umiddelbart, nårshow-metoden kaldes.shown.bs.collapse: Denne begivenhed udløses, når et kollaps-element er blevet synligt for brugeren (venter på CSS-overgange er afsluttet).hide.bs.collapse: Denne begivenhed udløses umiddelbart, nårhide-metoden er blevet kaldt.hidden.bs.collapse: Denne begivenhed udløses, når et kollaps-element er blevet skjult for brugeren (venter på CSS-overgange er afsluttet).
Tilgængelighed (Accessibility)
Når du arbejder med kollapsbare elementer, er det afgørende at tænke på tilgængelighed for at sikre, at alle brugere, inklusive dem, der anvender skærmlæsere eller lignende hjælpeteknologier, kan interagere med dit indhold. Bootstrap hjælper med dette ved at kræve specifikke ARIA-attributter.
aria-expanded: Tilføj denne attribut til kontrol-elementet (knappen/linket). Den formidler eksplicit den aktuelle tilstand af det kollapsbare element til skærmlæsere. Hvis elementet er lukket som standard, skal værdien være"false". Hvis det er åbent som standard (med.show-klassen), skal værdien være"true". Plugin'et vil automatisk skifte denne attribut.role="button": Hvis dit kontrol-element ikke er en<button>(f.eks. et<a>eller<div>), skal du tilføjerole="button"til elementet.aria-controls: Hvis dit kontrol-element kun er rettet mod et enkelt kollapsbart element (dvs.data-bs-targetpeger på et ID), bør du tilføjearia-controls-attributten til kontrol-elementet, der indeholder ID'et for det kollapsbare element. Dette giver brugere med hjælpeteknologier yderligere genveje til at navigere direkte til indholdet.
Det er vigtigt at bemærke, at Bootstrap's nuværende implementering ikke dækker alle de valgfrie tastaturinteraktioner beskrevet i WAI-ARIA Authoring Practices 1.1 accordion-mønsteret. Du skal selv inkludere disse med brugerdefineret JavaScript for fuld overholdelse.

Responsiv Kollaps: Brugerdefinerede løsninger
Mens Bootstrap's Collapse-komponent er responsiv i sig selv og tilpasser sig skærmstørrelser, er der tilfælde, hvor man ønsker at et element kun skal kollapse ved specifikke skærmstørrelser – for eksempel et navigationspanel, der kun kollapser på små skærme, men altid er udvidet på store. Dette kræver ofte en kombination af Bootstrap's grid-system og brugerdefineret JavaScript.
Standard Bootstrap har ikke indbyggede klasser som .collapse-sm, .collapse-md, etc., der automatisk styrer kollaps baseret på breakpoints. Disse er typisk en del af skræddersyede løsninger, hvor JavaScript lytter efter vinduesstørrelsesændringer og derefter tilføjer eller fjerner .collapse-klassen baseret på definerede breakpoints. Dette giver en stor fleksibilitet til at designe brugerflader, der opfører sig forskelligt på tværs af enheder, såsom et sidepanel, der kollapser på mobil, men forbliver åbent på desktop.
Almindelige Anvendelsestilfælde
Collapse-komponenten er utrolig alsidig og kan anvendes i mange forskellige scenarier for at forbedre brugeroplevelsen:
- Ofte Stillede Spørgsmål (FAQ): Ideel til at præsentere et stort antal spørgsmål og svar i et kompakt format ved at bruge accordion-funktionaliteten.
- Navigationsmenuer: Især på mobile enheder, hvor en "hamburger-menu" kan folde ud til at afsløre navigationslinks.
- Filter- og Sorteringsmuligheder: I webshops eller datatabeller kan filtermuligheder skjules i en kollapsbar boks for at spare plads.
- Vis mere/Vis mindre indhold: Til lange tekstafsnit, såsom artikelresumeer eller produktbeskrivelser, hvor brugeren kan vælge at se hele teksten.
- Detaljevisninger: Til at vise yderligere detaljer om et element, f.eks. i en liste over ordrer eller kontakter, uden at skulle navigere til en ny side.
Tips til Bedste Praksis
- Brug en wrapper for padding: Som nævnt, hvis du har brug for indre afstand (padding) omkring dit kollapsbare indhold, skal du placere det i et indre
div-element, som så får padding, i stedet for direkte på elementet med.collapse-klassen. - Test tilgængelighed: Sørg altid for at teste din implementering med skærmlæsere og tastaturnavigation for at garantere en god oplevelse for alle brugere.
- Hold indholdet relevant: Selvom Collapse giver dig mulighed for at skjule indhold, bør du stadig holde indholdet inden i de kollapsbare sektioner relevant og præcist.
- Visuel feedback: Sørg for, at dine udløsere (knapper/links) tydeligt indikerer, at de er interaktive og hvad de vil gøre.
Ofte Stillede Spørgsmål om Bootstrap 5 Collapse
Her er svar på nogle af de mest almindelige spørgsmål vedrørende Bootstrap 5's Collapse-komponent:
Hvad er forskellen på .collapse og .collapsing?
.collapse er den statiske klasse, der enten skjuler indholdet (når .show ikke er til stede) eller viser det. .collapsing er en dynamisk klasse, der tilføjes under animationen, når elementet er i gang med at folde ud eller ind. Den er midlertidig og håndterer overgangen.
Kan jeg bruge padding direkte på et .collapse element?
Nej, det anbefales ikke. På grund af den måde, CSS håndterer højdeovergange på, kan padding forårsage uønskede visuelle effekter eller spring under animationen. Brug i stedet et indre element (f.eks. en <div>) til at anvende padding på.
Hvordan får jeg en accordion-effekt med Collapse?
For at opnå en accordion-effekt, hvor kun ét panel er åbent ad gangen, skal du tilføje data-bs-parent="#dit-forælder-id" til hvert af de kollapsbare elementer. Forælder-ID'et skal være for det element, der omslutter alle dine kollapsbare paneler.
Skal jeg bruge JavaScript for at få Collapse til at virke?
Ikke nødvendigvis for grundlæggende funktionalitet. Du kan opnå meget ved blot at bruge dataattributter (data-bs-toggle og data-bs-target) i din HTML. JavaScript API'en er dog nødvendig for mere avanceret kontrol, dynamisk initialisering eller for at lytte efter begivenheder.
Hvordan gør jeg indhold synligt som standard?
Du skal blot tilføje .show-klassen til dit .collapse-element. For eksempel: <div class="collapse show" id="mitIndhold">...</div>.
Konklusion
Bootstrap 5's Collapse-komponent er et utroligt kraftfuldt værktøj i din webudvikler-værktøjskasse. Den giver dig mulighed for at skabe rene, organiserede og interaktive brugerflader, der forbedrer brugeroplevelsen betydeligt. Ved at mestre brugen af dens klasser, dataattributter og JavaScript API kan du nemt implementere alt fra simple "vis mere/vis mindre"-funktioner til komplekse accordion-menuer og responsive navigationsløsninger. Husk altid at fokusere på tilgængelighed for at sikre, at dit indhold er tilgængeligt for alle. God fornøjelse med at folde ud og ind!
Hvis du vil læse andre artikler, der ligner Bootstrap 5 Collapse: Skjul og Vis Indhold Dynamisk, kan du besøge kategorien Teknologi.
