# Oprettelse af tilgængelige websider ![Alt om tilgængelighed](../../../../translated_images/webdev101-a11y.8ef3025c858d897a403a1a42c0897c76e11b724d9a8a0c0578dd4316f7507622.da.png) > Sketchnote af [Tomomi Imura](https://twitter.com/girlie_mac) ## Quiz før lektionen [Quiz før lektionen](https://ff-quizzes.netlify.app/web/) > Webben er stærk på grund af dens universelle karakter. Adgang for alle, uanset handicap, er en essentiel del. > > \- Sir Timothy Berners-Lee, W3C-direktør og opfinder af World Wide Web Her er noget, der måske vil overraske dig: Når du bygger tilgængelige websites, hjælper du ikke kun mennesker med handicap – du gør faktisk webben bedre for alle! Har du nogensinde lagt mærke til de små ramper ved gadehjørner? De blev oprindeligt designet til kørestole, men nu hjælper de også folk med barnevogne, leveringsarbejdere med vogne, rejsende med rullekufferter og cyklister. Det er præcis sådan, tilgængeligt webdesign fungerer – løsninger, der hjælper én gruppe, ender ofte med at gavne alle. Ret sejt, ikke? I denne lektion vil vi udforske, hvordan man skaber websites, der virkelig fungerer for alle, uanset hvordan de bruger nettet. Du vil opdage praktiske teknikker, der allerede er indbygget i webstandarder, få hands-on erfaring med testværktøjer og se, hvordan tilgængelighed gør dine sider mere brugervenlige for alle. Ved slutningen af denne lektion vil du have selvtillid til at gøre tilgængelighed til en naturlig del af din udviklingsproces. Klar til at udforske, hvordan gennemtænkte designvalg kan åbne webben for milliarder af brugere? Lad os komme i gang! > Du kan tage denne lektion på [Microsoft Learn](https://docs.microsoft.com/learn/modules/web-development-101/accessibility/?WT.mc_id=academic-77807-sagibbon)! ## Forståelse af hjælpemidler Før vi begynder at kode, lad os tage et øjeblik til at forstå, hvordan mennesker med forskellige evner faktisk oplever webben. Dette er ikke bare teori – at forstå disse navigationsmønstre i den virkelige verden vil gøre dig til en meget bedre udvikler! Hjælpemidler er ret fantastiske værktøjer, der hjælper mennesker med handicap med at interagere med websites på måder, der kan overraske dig. Når du først forstår, hvordan disse teknologier fungerer, bliver det meget mere intuitivt at skabe tilgængelige weboplevelser. Det er som at lære at se din kode gennem en andens øjne. ### Skærmlæsere [Skærmlæsere](https://en.wikipedia.org/wiki/Screen_reader) er ret sofistikerede teknologier, der konverterer digital tekst til tale eller punktskrift. Selvom de primært bruges af personer med synshandicap, er de også meget nyttige for brugere med indlæringsvanskeligheder som dysleksi. Jeg kan godt lide at tænke på en skærmlæser som en virkelig smart fortæller, der læser en bog højt for dig. Den læser indholdet højt i en logisk rækkefølge, annoncerer interaktive elementer som "knap" eller "link" og giver tastaturgenveje til at navigere rundt på en side. Men her er sagen – skærmlæsere kan kun udføre deres magi, hvis vi bygger websites med korrekt struktur og meningsfuldt indhold. Det er her, du som udvikler kommer ind i billedet! **Populære skærmlæsere på tværs af platforme:** - **Windows**: [NVDA](https://www.nvaccess.org/about-nvda/) (gratis og mest populær), [JAWS](https://webaim.org/articles/jaws/), [Narrator](https://support.microsoft.com/windows/complete-guide-to-narrator-e4397a0d-ef4f-b386-d8ae-c172f109bdb1/?WT.mc_id=academic-77807-sagibbon) (indbygget) - **macOS/iOS**: [VoiceOver](https://support.apple.com/guide/voiceover/welcome/10) (indbygget og meget kapabel) - **Android**: [TalkBack](https://support.google.com/accessibility/android/answer/6283677) (indbygget) - **Linux**: [Orca](https://wiki.gnome.org/Projects/Orca) (gratis og open-source) **Hvordan skærmlæsere navigerer webindhold:** Skærmlæsere tilbyder flere navigationsmetoder, der gør browsing effektiv for erfarne brugere: - **Sekventiel læsning**: Læser indhold fra top til bund, som at følge en bog - **Landmark-navigation**: Hopper mellem sektioner på siden (header, nav, main, footer) - **Overskriftsnavigation**: Springer mellem overskrifter for at forstå sidens struktur - **Linklister**: Genererer en liste over alle links for hurtig adgang - **Formularfelter**: Navigerer direkte mellem inputfelter og knapper > 💡 **Her er noget, der blæste mig omkuld**: 68% af skærmlæserbrugere navigerer primært via overskrifter ([WebAIM Survey](https://webaim.org/projects/screenreadersurvey9/#finding)). Det betyder, at din overskriftsstruktur er som et kort for brugerne – når du gør det rigtigt, hjælper du bogstaveligt talt folk med at finde rundt i dit indhold hurtigere! ### Opbygning af din testarbejdsgang Her er gode nyheder – effektiv tilgængelighedstestning behøver ikke at være overvældende! Du vil gerne kombinere automatiserede værktøjer (de er fantastiske til at fange åbenlyse problemer) med noget hands-on testning. Her er en systematisk tilgang, som jeg har fundet ud af fanger de fleste problemer uden at tage hele din dag: **Essentiel manuel testarbejdsgang:** ```mermaid graph TD A[Start Testing] --> B{Keyboard Navigation} B --> C[Tab through all interactive elements] C --> D{Screen Reader Testing} D --> E[Test with NVDA/VoiceOver] E --> F{Zoom Testing} F --> G[Zoom to 200% and test functionality] G --> H{Color/Contrast Check} H --> I[Verify all text meets contrast ratios] I --> J{Focus Management} J --> K[Ensure focus indicators are visible] K --> L[Testing Complete] ``` **Trin-for-trin testtjekliste:** 1. **Tastaturnavigation**: Brug kun Tab, Shift+Tab, Enter, Space og piletaster 2. **Skærmlæsertest**: Aktiver NVDA, VoiceOver eller Narrator og naviger med lukkede øjne 3. **Zoomtest**: Test ved 200% og 400% zoomniveauer 4. **Farvekontrastverifikation**: Tjek al tekst og UI-komponenter 5. **Fokusindikator-test**: Sørg for, at alle interaktive elementer har synlige fokusmarkeringer ✅ **Start med Lighthouse**: Åbn din browsers DevTools, kør en Lighthouse-tilgængelighedsaudit, og brug resultaterne til at fokusere på dine manuelle testområder. ### Zoom- og forstørrelsesværktøjer Du ved, hvordan du nogle gange zoomer ind på din telefon, når teksten er for lille, eller kniber øjnene sammen på din laptops skærm i stærkt sollys? Mange brugere er afhængige af forstørrelsesværktøjer for at gøre indhold læsbart hver eneste dag. Dette inkluderer personer med nedsat syn, ældre voksne og alle, der nogensinde har prøvet at læse en hjemmeside udendørs. Moderne zoomteknologier er udviklet ud over blot at gøre ting større. At forstå, hvordan disse værktøjer fungerer, vil hjælpe dig med at skabe responsive designs, der forbliver funktionelle og attraktive på ethvert forstørrelsesniveau. **Moderne browser-zoomfunktioner:** - **Sidezoom**: Skalerer alt indhold proportionalt (tekst, billeder, layout) - dette er den foretrukne metode - **Kun tekstzoom**: Øger skrifttypestørrelsen, mens den oprindelige layout bevares - **Pinch-to-zoom**: Mobilgestik til midlertidig forstørrelse - **Browserstøtte**: Alle moderne browsere understøtter zoom op til 500% uden at bryde funktionaliteten **Specialiseret forstørrelsessoftware:** - **Windows**: [Magnifier](https://support.microsoft.com/windows/use-magnifier-to-make-things-on-the-screen-easier-to-see-414948ba-8b1c-d3bd-8615-0e5e32204198) (indbygget), [ZoomText](https://www.freedomscientific.com/training/zoomtext/getting-started/) - **macOS/iOS**: [Zoom](https://www.apple.com/accessibility/mac/vision/) (indbygget med avancerede funktioner) > ⚠️ **Designovervejelse**: WCAG kræver, at indhold forbliver funktionelt, når det zoomes til 200%. På dette niveau bør horisontal scrolling være minimal, og alle interaktive elementer bør forblive tilgængelige. ✅ **Test dit responsive design**: Zoom din browser til 200% og 400%. Tilpasser dit layout sig elegant? Kan du stadig få adgang til alle funktioner uden overdreven scrolling? ## Moderne tilgængelighedstestværktøjer Nu hvor du forstår, hvordan folk navigerer på nettet med hjælpemidler, lad os udforske de værktøjer, der hjælper dig med at bygge og teste tilgængelige websites. Tænk på det sådan: automatiserede værktøjer er gode til at fange åbenlyse problemer (som manglende alt-tekst), mens hands-on testning hjælper dig med at sikre, at dit site føles godt at bruge i den virkelige verden. Sammen giver de dig selvtillid til, at dine sites fungerer for alle. ### Farvekontrasttest Her er gode nyheder: farvekontrast er et af de mest almindelige tilgængelighedsproblemer, men det er også et af de nemmeste at løse. God kontrast gavner alle – fra brugere med synshandicap til folk, der prøver at læse deres telefoner på stranden. **WCAG-kontrastkrav:** | Teksttype | WCAG AA (Minimum) | WCAG AAA (Forbedret) | |-----------|-------------------|---------------------| | **Normal tekst** (under 18pt) | 4.5:1 kontrastforhold | 7:1 kontrastforhold | | **Stor tekst** (18pt+ eller 14pt+ fed) | 3:1 kontrastforhold | 4.5:1 kontrastforhold | | **UI-komponenter** (knapper, formularrammer) | 3:1 kontrastforhold | 3:1 kontrastforhold | **Essentielle testværktøjer:** - [Colour Contrast Analyser](https://www.tpgi.com/color-contrast-checker/) - Desktop-app med farvevælger - [WebAIM Contrast Checker](https://webaim.org/resources/contrastchecker/) - Webbaseret med øjeblikkelig feedback - [Stark](https://www.getstark.co/) - Designværktøjs-plugin til Figma, Sketch, Adobe XD - [Accessible Colors](https://accessible-colors.com/) - Find tilgængelige farvepaletter ✅ **Byg bedre farvepaletter**: Start med dine brandfarver og brug kontrasttestere til at skabe tilgængelige variationer. Dokumentér disse som en del af dit designsystems tilgængelige farvetokens. ### Omfattende tilgængelighedsaudit Den mest effektive tilgængelighedstest kombinerer flere tilgange. Intet enkelt værktøj fanger alt, så opbygning af en testrutine med forskellige metoder sikrer grundig dækning. **Browserbaseret test (indbygget i DevTools):** - **Chrome/Edge**: Lighthouse-tilgængelighedsaudit + Tilgængelighedspanel - **Firefox**: Tilgængelighedsinspektør med detaljeret trævisning - **Safari**: Audit-fane i Web Inspector med VoiceOver-simulering **Professionelle testudvidelser:** - [axe DevTools](https://www.deque.com/axe/devtools/) - Industri-standard automatiseret test - [WAVE](https://wave.webaim.org/extension/) - Visuel feedback med fejlmarkering - [Accessibility Insights](https://accessibilityinsights.io/) - Microsofts omfattende testværktøj **Kommandolinje og CI/CD-integration:** - [axe-core](https://github.com/dequelabs/axe-core) - JavaScript-bibliotek til automatiseret test - [Pa11y](https://pa11y.org/) - Kommandolinje tilgængelighedstestværktøj - [Lighthouse CI](https://github.com/GoogleChrome/lighthouse-ci) - Automatiseret tilgængelighedsscore > 🎯 **Testmål**: Stræb efter en Lighthouse-tilgængelighedsscore på 95+ som din baseline. Husk, automatiserede værktøjer fanger kun omkring 30-40% af tilgængelighedsproblemer – manuel testning er stadig essentiel! ## Byg tilgængelighed fra bunden Nøglen til succes med tilgængelighed er at indarbejde det i din grundstruktur fra dag ét. Jeg ved, det kan være fristende at tænke "Jeg tilføjer tilgængelighed senere," men det er som at prøve at tilføje en rampe til et hus, efter det allerede er bygget. Muligt? Ja. Let? Ikke rigtig. Tænk på tilgængelighed som planlægning af et hus – det er meget nemmere at inkludere kørestolsadgang i dine oprindelige arkitektplaner end at eftermontere alt senere. ### POUR-principperne: Din tilgængelighedsfundament Web Content Accessibility Guidelines (WCAG) er bygget omkring fire grundlæggende principper, der staver POUR. Bare rolig – dette er ikke tørre akademiske begreber! De er faktisk praktiske retningslinjer for at skabe indhold, der fungerer for alle. Når du får styr på POUR, bliver det meget mere intuitivt at træffe tilgængelighedsbeslutninger. Det er som at have en mental tjekliste, der guider dine designvalg. Lad os bryde det ned: **🔍 Opfatteligt**: Information skal præsenteres på måder, som brugere kan opfatte gennem deres tilgængelige sanser - Giv tekstalternativer til ikke-tekstindhold (billeder, videoer, lyd) - Sørg for tilstrækkelig farvekontrast for al tekst og UI-komponenter - Tilbyd undertekster og transskriptioner til multimedieindhold - Design indhold, der forbliver funktionelt, når det forstørres op til 200% - Brug flere sensoriske karakteristika (ikke kun farve) til at formidle information **🎮 Operabelt**: Alle grænsefladekomponenter skal kunne betjenes via tilgængelige inputmetoder - Gør al funktionalitet tilgængelig via tastaturnavigation - Giv brugerne tilstrækkelig tid til at læse og interagere med indhold - Undgå indhold, der forårsager anfald eller vestibulære lidelser - Hjælp brugere med at navigere effektivt med klar struktur og landemærker - Sørg for, at interaktive elementer har tilstrækkelige målstørrelser (minimum 44px) **📖 Forståeligt**: Information og UI-betjening skal være klar og forståelig - Brug klart, enkelt sprog, der passer til din målgruppe - Sørg for, at indhold vises og fungerer på forudsigelige, konsistente måder - Giv klare instruktioner og fejlmeddelelser for brugerinput - Hjælp brugere med at forstå og rette fejl i formularer - Organiser indhold med logisk læserækkefølge og informationshierarki **💪 Robust**: Indhold skal fungere pålideligt på tværs af forskellige teknologier og hjælpemidler - Brug gyldig, semantisk HTML som din grundstruktur - Sørg for kompatibilitet med nuværende og fremtidige hjælpemidler - Følg webstandarder og bedste praksis for markup - Test på tværs af forskellige browsere, enheder og hjælpemidler - Strukturér indhold, så det nedgraderes elegant, når avancerede funktioner ikke understøttes ## Skabelse af tilgængeligt visuelt design Godt visuelt design og tilgængelighed går hånd i hånd. Når du designer med tilgængelighed i tankerne, opdager du ofte, at disse begrænsninger fører til renere, mere elegante løsninger, der gavner alle brugere. Lad os udforske, hvordan man skaber visuelt tiltalende designs, der fungerer for alle, uanset deres visuelle evner eller de forhold, hvorunder de ser dit indhold. ### Farve- og visuelle tilgængelighedsstrategier Farver er stærke til kommunikation, men de bør aldrig være den eneste måde, du formidler vigtig information på. Design ud over farver skaber mere robuste og inkluderende oplevelser, der fungerer i flere situationer. **Design for forskelle i farvesyn:** Omkring 8% af mænd og 0,5% af kvinder har en form for forskel i farvesyn (ofte kaldet "farveblindhed"). De mest almindelige typer er: - **Deuteranopia**: Vanskeligheder med at skelne mellem rød og grøn - **Protanopia**: Rød fremstår mere dæmpet - **Tritanopia**: Vanskeligheder med blå og gul (sjælden) **Inklusive farvestrategier:** ```css /* ❌ Bad: Using only color to indicate status */ .error { color: red; } .success { color: green; } /* ✅ Good: Color plus icons and context */ .error { color: #d32f2f; border-left: 4px solid #d32f2f; } .error::before { content: "⚠️"; margin-right: 8px; } .success { color: #2e7d32; border-left: 4px solid #2e7d32; } .success::before { content: "✅"; margin-right: 8px; } ``` **Ud over grundlæggende kontrastkrav:** - Test dine farvevalg med farveblind-simulatorer - Brug mønstre, teksturer eller former sammen med farvekodning - Sørg for, at interaktive tilstande forbliver genkendelige uden farver - Overvej, hvordan dit design ser ud i højkontrasttilstand ✅ **Test din farveadgang**: Brug værktøjer som [Coblis](https://www.color-blindness.com/coblis-color-blindness-simulator/) for at se, hvordan dit websted ser ud for brugere med forskellige typer farvesyn. ### Fokusindikatorer og interaktionsdesign Fokusindikatorer er den digitale ækvivalent til en markør – de viser tastaturbrugere, hvor de befinder sig på siden. Veludformede fokusindikatorer forbedrer oplevelsen for alle ved at gøre interaktioner klare og forudsigelige. **Moderne bedste praksis for fokusindikatorer:** ```css /* Enhanced focus styles that work across browsers */ button:focus-visible { outline: 2px solid #0066cc; outline-offset: 2px; box-shadow: 0 0 0 4px rgba(0, 102, 204, 0.25); } /* Remove focus outline for mouse users, preserve for keyboard users */ button:focus:not(:focus-visible) { outline: none; } /* Focus-within for complex components */ .card:focus-within { box-shadow: 0 0 0 3px rgba(74, 144, 164, 0.5); border-color: #4A90A4; } /* Ensure focus indicators meet contrast requirements */ .custom-focus:focus-visible { outline: 3px solid #ffffff; outline-offset: 2px; box-shadow: 0 0 0 6px #000000; } ``` **Krav til fokusindikatorer:** - **Synlighed**: Skal have mindst 3:1 kontrastforhold med omkringliggende elementer - **Bredde**: Minimum 2px tykkelse rundt om hele elementet - **Vedholdenhed**: Skal forblive synlig, indtil fokus flyttes - **Adskillelse**: Skal være visuelt forskellig fra andre UI-tilstande > 💡 **Designtip**: Gode fokusindikatorer bruger ofte en kombination af kontur, box-shadow og farveændringer for at sikre synlighed på forskellige baggrunde og kontekster. ✅ **Auditér fokusindikatorer**: Tab dig gennem dit websted og bemærk, hvilke elementer der har klare fokusindikatorer. Er nogle svære at se eller helt mangler? ### Semantisk HTML: Fundamentet for tilgængelighed Semantisk HTML er som at give hjælpemidler et GPS-system til dit websted. Når du bruger de rigtige HTML-elementer til deres tilsigtede formål, giver du skærmlæsere, tastaturer og andre værktøjer et detaljeret kort, der hjælper brugerne med at navigere effektivt. Her er en analogi, der virkelig gav mening for mig: semantisk HTML er forskellen mellem et velorganiseret bibliotek med klare kategorier og nyttige skilte versus et lager, hvor bøgerne er spredt tilfældigt. Begge steder har de samme bøger, men hvor ville du helst prøve at finde noget? Præcis! **Byggestenene i en tilgængelig sidestruktur:** ```html

Your Site Name

Article Title

Published on

First Section

Content that relates to this section...

Second Section

More related content...

``` **Hvorfor semantisk HTML transformerer tilgængelighed:** | Semantisk element | Formål | Fordel for skærmlæsere | |------------------|---------|----------------------| | `
` | Side- eller sektionens overskrift | "Banner-landmærke" - hurtig navigation til toppen | | `