CSS Academy · Lektion

Mønstre til dropdowns og popovers

Opret tilgængelige dropdownmenuer og popovers med CSS-positionering og Popover API.

Lektion 3 af 413 trin

Mønstre til dropdowns og popovers er en gratis CSS Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i CSS Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. CSS Academy-kurset indeholder 4 lektioner i alt.

Popover API'et

HTML Popover API'et (Chrome 114+, bredt understøttet) giver en deklarativ vis/skjul-adfærd: attributten popover på målelementet og popovertarget på udløserknappen. Der kræves ingen JavaScript til grundlæggende åbning og lukning, herunder lukning ved klik uden for elementet og håndtering af Escape-tasten.

Stil popovers

Mål popover-elementer med [popover] eller :popover-open. Pseudo-elementet ::backdrop kan bruges til at dæmpe baggrunden. Popovers gengives i det øverste lag ligesom dialoger, så du undgår problemer med z-index-stabling.

Placering af rullemenu med CSS Anchor Positioning

CSS Anchor Positioning (Chrome 125+) placerer en popover i forhold til sin udløser uden JavaScript: anchor-name: --btn på udløseren, position-anchor: --btn på popoveren og derefter top: anchor(bottom); left: anchor(left) for at justere den under udløseren.

Alternativ med position: absolute

Uden Anchor Positioning kan du bruge en positioneret overordnet wrapper: position: relative på beholderen og position: absolute; top: 100%; left: 0 på rullemenuen. Det fungerer på tværs af browsere, men kræver, at udløseren og rullemenuen er søskende i en positioneret beholder.

CSS til rullemenuer

Stil rullemenuen som position: absolute; background: var(--color-surface); box-shadow: var(--shadow-md); border-radius: var(--radius-md); padding: var(--spacing-1) 0; min-width: 200px. Menupunkter bruger indvendig afstand, hover-baggrund og visning i fuld bredde.

Animation

Animér åbning og lukning af popovers med @starting-style til indgangen og transition-behavior: allow-discrete for at animere ændringen af egenskaben display. Det muliggør ind- og udgangsanimationer, der kun bruger CSS og følger popoverens åbne eller lukkede tilstand.

Tastaturtilgængelighed

Rullemenuer skal understøtte tastaturet: Piletaster navigerer mellem menupunkter, Enter/Space aktiverer det fokuserede menupunkt, og Escape lukker menuen og returnerer fokus til udløseren. Popover API'et håndterer Escape automatisk, mens navigation med piletaster kræver håndtering af JavaScript-hændelser.

ARIA til tilpassede rullemenuer

Til en tilpasset rullemenu, der ikke bruger popover API'et, skal du tilføje aria-haspopup="listbox" og aria-expanded til udløseren, role="listbox" til listen samt role="option" og aria-selected til hvert menupunkt. Skærmlæsere annoncerer den udvidede tilstand og antallet af menupunkter.

Overflow og sammenstød med visningsområdet

En rullemenu, der placeres under sin udløser, kan løbe ud over visningsområdet i bunden. Registrér dette med IntersectionObserver eller getBoundingClientRect, og vend rullemenuen, så den placeres over udløseren. CSS Anchor Positioning håndterer dette med position-try-fallbacks.

Rullemenuer i flere niveauer

Nestede rullemenuer (undermenuer) gør løsningen mere kompleks. Placér undermenuer til højre for deres overordnede menupunkter. Tilføj en forsinkelse, før de skjules ved mouseout, ved hjælp af CSS transition-delay eller et JavaScript-tidsudløb, så undermenuer ikke lukkes under diagonal musebevægelse.

Hensyn til berøringsenheder

Rullemenuer, der udløses ved hover, fungerer ikke på berøringsenheder — de har ingen hover-tilstand. Brug klik- eller trykudløsere overalt. Lukning ved tryk uden for elementet fungerer via Popover API'ets lukning ved klik uden for elementet eller en kliklytter på document, der lukker åbne rullemenuer.

Videnstjek

Hvad håndterer Popover API'et automatisk, som tidligere krævede tilpasset JavaScript?

Opsummering

Popover API'et og CSS Anchor Positioning gør det sammen muligt at bruge deklarative mønstre til rullemenuer og popovers med et minimum af JavaScript. For bredere browserunderstøttelse fungerer mønstre med positionerede beholdere pålideligt. Tastaturtilgængelighed, ARIA-attributter, håndtering af sammenstød med visningsområdet og understøttelse af berøringsenheder fuldender produktionsklare rullemenuer.

Gratis at komme i gang

Lær CSS med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
40
Lektioner
159

Ofte stillede spørgsmål

Er lektionen “Mønstre til dropdowns og popovers” gratis?

Ja — hele teksten til “Mønstre til dropdowns og popovers” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af CSS Academy-kurset, skal du opgradere til CoddyKit PRO. CSS Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Mønstre til dropdowns og popovers”?

Opret tilgængelige dropdownmenuer og popovers med CSS-positionering og Popover API. Du øver dig i CSS Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på CSS Academy?

Der kræves ingen tidligere erfaring. CSS Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Mønstre til dropdowns og popovers”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne CSS Academy-lektion?

Ja. Alle CSS Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Card-komponent med CSS custom properties
  2. Typografi til modalvinduer og dialoger
  3. Mønstre til dropdowns og popovers
  4. Tab-komponent med :checked-hack kontra JS
← Tilbage til CSS Academy