Om komponenten
Formål
En flyttbar skillelinje mellom to paneler - f.eks. et sidepanel og hovedinnhold i et dashboard - som lar brukeren justere den relative størrelsen med mus/berøring eller piltaster. Implementerer ARIA APG sitt Window Splitter-mønster: skillelinjen får role="separator" med aria-valuenow/-min/-max, og piltaster justerer størrelsen i faste steg.
Egner seg for
- Dashboards og arbeidsflater med to paneler der brukeren har nytte av å selv justere hvor mye plass hvert panel får.
- Sidepanel + hovedinnhold-oppsett der begge deler trenger variabel bredde avhengig av bruk.
Egner seg ikke for
- Faste, ikke-justerbare layout-forhold - bruk
<lm-grid>/<lm-flex>med faste andeler i stedet. - Mobil/smale skjermer der to side-ved-side-paneler uansett ikke gir plass - vurder å stable panelene i stedet under et brytepunkt.
Bruk
<script type="module" src="/designsystem/komponenter/layout/splitter/splitter.js"></script>
<lm-splitter verdi="30" min="20" maks="60" style="block-size: 60vh;">
<nav slot="forste">... sidepanel ...</nav>
<main slot="andre">... hovedinnhold ...</main>
</lm-splitter>
Prøv selv
Rediger koden under - resultatet oppdateres live.
Attributter
| Attributt | Type | Standard | Beskrivelse |
|---|---|---|---|
orientering | "horisontal" | "vertikal" | "horisontal" | Attributt/property. "horisontal" deler panelene side ved side (loddrett skillelinje); "vertikal" deler dem over/under hverandre (vannrett skillelinje). |
verdi | number | 50 | Attributt/property. Størrelsen på første panel, i prosent av totalen. |
min | number | 10 | Attributt/property. Laveste tillatte prosentandel for første panel. |
maks | number | 90 | Attributt/property. Høyeste tillatte prosentandel for første panel. |
Events
| Event | Type | Beskrivelse |
|---|---|---|
splitter:endring | CustomEvent | Dispatches når skillelinjen flyttes. detail.verdi er den nye prosentandelen for første panel. |
Slots
| Slot | Beskrivelse |
|---|---|
forste | Innholdet i det første panelet. |
andre | Innholdet i det andre panelet. |
Parts
| Part | Beskrivelse |
|---|---|
wrapper | Grid-containeren rundt begge panelene og skillelinjen. |
forste | Det første panelet. |
andre | Det andre panelet. |
skillelinje | Selve den flyttbare skillelinjen (role="separator"). |
Styling med ::part()
Hver part over kan restyles direkte fra et vanlig, ytre stilark - uten å måtte endre selve komponenten eller duplisere den:
lm-splitter::part(wrapper) {
/* egne stiler for "Grid-containeren rundt begge panelene og skillelinjen." */
}
lm-splitter::part(forste) {
/* egne stiler for "Det første panelet." */
}
lm-splitter::part(andre) {
/* egne stiler for "Det andre panelet." */
}
lm-splitter::part(skillelinje) {
/* egne stiler for "Selve den flyttbare skillelinjen (`role="separator"`)." */
}
Tilgjengelighet
Skillelinjen har role="separator", aria-orientation, og aria-valuenow/-min/-max som alltid reflekterer gjeldende og tillatt størrelsesintervall. Piltaster (høyre/venstre i horisontal modus, ned/opp i vertikal modus) justerer størrelsen i faste steg; Home/End hopper til min/maks.
role="separator"medaria-orientation("vertical" for side-ved-side-paneler, "horizontal" for stablede paneler - motsatt av komponentens egetorientering-attributt, per ARIA-spesifikasjonens definisjon av selve skillelinjens retning).aria-valuenow/aria-valuemin/aria-valuemaxoppdateres synkront med den visuelle posisjonen, i prosent.- Skillelinjen er selvstendig tastaturnåbar (
tabindex="0") uavhengig av panelenes eget innhold.
Detaljer
- Panel-størrelsen implementeres med CSS Grid (
grid-template-columns/-rows) satt dynamisk av komponenten - selve panelene er vanlige<div>-er medoverflow: auto, ikke noe eget scroll-rammeverk. verdiklemmes alltid til[min, maks]ved setting, uansett om endringen kommer fra drag, piltaster, eller direkte property-tilordning.
Referanser
Se også:
../grid/index.html - brukes for fast, ikke-justerbar rutenett-layout.
Avhengigheter: Ingen