CSS Academy · Lektion

Typografi til modalvinduer og dialoger

Style native HTML-dialogelementer og brugerdefinerede modalvinduer med backdrop, positionering og animationer.

Lektion 2 af 413 trin

Typografi til modalvinduer og dialoger er en gratis CSS Academy-lektion på CoddyKit. Dette er lektion 2 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.

Det indbyggede dialog-element

HTML-elementet <dialog> har indbygget modaladfærd: fastholdelse af fokus, lukning med Escape og API'et showModal() / close(). Stil det med CSS i stedet for at bygge et tilpasset modalskelet fra bunden.

Stil baggrunden

Pseudo-elementet ::backdrop styler overlejringen bag en åben <dialog>. Anvend en halvgennemsigtig baggrund: dialog::backdrop { background: rgba(0,0,0,0.5); backdrop-filter: blur(4px); }. Du behøver ingen wrapper-div.

Dialoglayout

Centrér dialoger med CSS: dialog { margin: auto; max-width: min(90vw, 640px); max-height: 90vh; overflow-y: auto; }. Når du bruger margin: auto på en dialog, placeres den midt i visningsområdet uden positionering med JavaScript.

Rulning og overflow

Indstil overflow-y: auto på selve dialogen for at håndtere langt indhold. Indstil overflow: hidden på body, når modalen åbnes, for at forhindre rulning i baggrunden — tilføj og fjern en klasse med JavaScript for at slå dette til og fra.

Animation med CSS

Animér dialogens indgang med @starting-style (Chrome 117+) for indgangsanimationer, der kun bruger CSS, uden JavaScript. For bredere understøttelse kan du tilføje en open-klasse med JavaScript og bruge transition på transform og opacity: slide-up fra translateY(20px) til translateY(0).

Udfordring: lukkeanimation

Det er vanskeligt at animere lukningen af en dialog — dialogen skjules straks ved close(). Løsningerne er at bruge popover API'et, som har indbygget understøttelse af lukkeanimationer, eller at opfange lukningen med JavaScript, afspille klassen for udgangsanimationen og derefter kalde close(), når animationen slutter.

Håndtering af z-index

Dialoger åbnes over alt andet indhold på siden. Undgå z-index-konflikter ved at bruge dialog-elementets indbyggede stablingskontekst — det gengives i det øverste lag over alle CSS z-index-værdier, uden at dialogen selv behøver en z-index-indstilling.

Responsiv dialog

På mobile enheder kan du lade dialoger glide op fra bunden som et ark: dialog { margin: auto auto 0; width: 100%; border-radius: 16px 16px 0 0; max-height: 90vh; }. På computer centreres de som en traditionel modal ved hjælp af mønsteret med margin: auto.

Fokusstyring

Det indbyggede dialog-element flytter automatisk fokus til det første element, der kan modtage fokus, når dialogen åbnes. Sørg for en logisk tabulatorrækkefølge i dialogen. Tilføj en lukkeknap, der returnerer fokus til udløseren, når dialogen lukkes, så tastaturnavigationen forbliver sammenhængende.

Tilgængelighedsattributter

Tilføj aria-labelledby, som peger på dialogens titel, og aria-describedby, som peger på dialogens beskrivelse. Dialogrollen er implicit for <dialog>. Skærmlæsere annoncerer disse etiketter, når fokus flyttes ind i dialogen.

Mønster for bekræftelsesdialog

Bekræftelsesdialoger skal indeholde: en tydelig spørgsmålstitel, en kort beskrivelse af konsekvenserne, en destruktiv handlingsknap (rød og højrejusteret) samt en annulleringsknap (venstrejusteret eller sekundær). Brug autofocus på annulleringsknappen, så det sikre valg er standardhandlingen ved tastaturnavigation.

Videnstjek

Hvad er fordelen ved at bruge det indbyggede <dialog>-element frem for en tilpasset modal baseret på div-elementer?

Opsummering

Det indbyggede dialog-element med ::backdrop, centrering med margin: auto, styring af overflow, CSS-animationer til indgang og fokusstyring giver et fuldt tilgængeligt, CSS-drevet mønster til modaler. Responsivt arklayout på mobile enheder og korrekte ARIA-attributter fuldender en dialogkomponent, der er klar til produktion.

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 “Typografi til modalvinduer og dialoger” gratis?

Ja — hele teksten til “Typografi til modalvinduer og dialoger” 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 “Typografi til modalvinduer og dialoger”?

Style native HTML-dialogelementer og brugerdefinerede modalvinduer med backdrop, positionering og animationer. 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 2 af 4.

Hvor lang tid tager lektionen “Typografi til modalvinduer og dialoger”?

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