Eliminierung technischer Schulden mit PHPStan, Rector PHP und PHPUnit. Über 20 Jahre Praxiserfahrung in skalierbaren Backends.
- Erstellt:
- Aktualisiert:
- Autor:
- Roland Golla
Was ist Contrast Enhancement?
Inhalt
Contrast Enhancement mit NCA: Schnelle Hilfe vom Experten
Gesetzliche Konformität & Inklusion. Optimierung von Performance und Conversion durch radikal nutzerzentriertes, universelles Design.
Skalierbare KI-Systeme mit echtem Code Ownership. CI/CD, Backup-Strategien und Infrastruktur, die mit deinem Team wächst.
Technik 1: prefers-contrast respektieren
:root {
--color-text: #2b2b2b;
--color-bg: #fafafa;
--color-border: #c8c8c8;
--color-link: #0b6e4f;
}
@media (prefers-contrast: more) {
:root {
--color-text: #000000;
--color-bg: #ffffff;
--color-border: #000000;
--color-link: #003d2b;
}
a {
text-decoration-thickness: 2px;
}
button, input, select {
border-width: 2px;
}
}
Technik 2: Den Windows Kontrastmodus überleben
- Hintergrundbilder verschwinden. Ein Icon als background-image ist weg. Ein Button, der nur über Hintergrundfarbe erkennbar war, ist unsichtbar.
- Box Shadows verschwinden. Ein Fokus Ring, der nur über box-shadow gesetzt war, ist weg. Die Tastaturnavigation wird blind.
- Rahmen bleiben. Alles mit einem echten border überlebt, auch wenn die Farbe ersetzt wird.
- SVG mit currentColor bleibt. Inline SVG, das seine Farbe vom Text erbt, wird korrekt umgefärbt.
@media (forced-colors: active) {
.button {
border: 2px solid ButtonText;
}
.card {
border: 1px solid CanvasText;
}
:focus-visible {
outline: 3px solid Highlight;
outline-offset: 2px;
}
.icon {
forced-color-adjust: auto;
fill: currentColor;
}
}
Technik 3: Text auf Bildern und Verläufen lesbar halten
- Overlay: Ein halbtransparenter dunkler Layer zwischen Bild und Text. Mit 50 bis 60 Prozent Deckkraft erreicht weißer Text auf fast jedem Foto 4,5:1. Der einfachste und robusteste Weg.
- Textbox: Der Text bekommt einen eigenen, deckenden Hintergrund. Das Bild bleibt unangetastet, der Kontrast ist exakt berechenbar.
- Text Shadow als Notlösung: Ein weicher dunkler Schatten hilft bei kurzen Headlines, ist aber für Fließtext nicht ausreichend und wird von Kontrast Tools nicht mitgemessen.
.hero {
position: relative;
}
.hero::before {
content: '';
position: absolute;
inset: 0;
background: rgb(0 0 0 / 0.55);
}
.hero__text {
position: relative;
color: #ffffff;
}
@media (prefers-contrast: more) {
.hero::before {
background: rgb(0 0 0 / 0.8);
}
}
Technik 4: Kontrastmodus als Schalter auf der Seite
- Sie sind selbst barrierefrei. Als Button ausgezeichnet, mit Tastatur erreichbar, mit aria-pressed für den Zustand. Ein Schalter für Kontrast, der im Kontrastmodus verschwindet, ist ein Klassiker.
- Sie merken sich die Wahl. Über localStorage oder ein Cookie, damit die Einstellung beim nächsten Seitenaufruf noch gilt.
- Sie setzen nur ein Attribut. Ein data-contrast auf dem html Element, den Rest macht CSS über dieselben Tokens wie die Media Query. Kein doppeltes Stylesheet.
Contrast Enhancement Techniken im Vergleich
| Technik | Wann sinnvoll | Typischer Fehler |
|---|---|---|
| prefers-contrast: more | Immer, kostet nur einen zweiten Token Satz | Farben direkt in Komponenten statt in Variablen, Modus wird nie getestet |
| forced-colors: active | Immer, Windows Kontrastmodus ist weit verbreitet | Icons als Hintergrundbild, Fokus Ring nur über box-shadow, Buttons ohne Rahmen |
| Overlay auf Bildern | Hero Bereiche, Teaser Cards mit Text auf Foto | Overlay zu schwach, Kontrast nur an der dunkelsten Stelle gemessen |
| Kontrast Schalter auf der Seite | Kiosk, fremde Geräte, sehr eigene Farbwelt | Schalter nicht per Tastatur erreichbar, Einstellung wird nicht gespeichert, Drittanbieter Overlay statt eigener Lösung |
Alle Kontrastmodi automatisiert testen mit Cypress
const modes = [
{ name: 'Standard', features: [] },
{ name: 'Dark Mode', features: [['prefers-color-scheme', 'dark']] },
{ name: 'Hoher Kontrast', features: [['prefers-contrast', 'more']] },
];
modes.forEach(({ name, features }) => {
it(`Startseite erfüllt Kontrast im Modus ${name}`, () => {
cy.visit('/', {
onBeforeLoad(win) {
cy.stub(win, 'matchMedia').callsFake((query) => ({
matches: features.some(([f, v]) => query.includes(`${f}: ${v}`)),
addEventListener: () => {},
removeEventListener: () => {},
}));
},
});
cy.injectAxe();
cy.checkA11y(null, { runOnly: ['color-contrast', 'color-contrast-enhanced'] });
});
});
For accessibility, Lc 15 is the point of invisibility for many users.
Contrast Enhancement in NCA Projekten
Erreichen Sie unsere Spezialisten zu barrierefreien Webdesign
Wir sind hier, um Ihnen zu helfen. Gemeinsam meistern wir Ihre digitalen Herausforderungen und fördern die Inklusion im Internet. Lassen Sie uns Ihre Projekte mit barrierefreiem Webdesign erfolgreich machen.
Häufige Fragen zu Contrast Enhancement
Was ist Contrast Enhancement 2026?
Contrast Enhancement umfasst alle Techniken, die den Kontrast über das WCAG Minimum hinaus erhöhen oder an Nutzereinstellungen anpassen: prefers-contrast, forced-colors, Overlays für Text auf Bildern und ein Kontrast Schalter auf der Seite. 2026 ist das Standard in jedem Design System, das BFSG Anforderungen dauerhaft erfüllen will.
Welche Kontrastwerte gelten 2026 für erhöhten Kontrast?
WCAG 2.2 Kriterium 1.4.6 Kontrast Erhöht (Level AAA) verlangt 7:1 für normalen Text und 4,5:1 für großen Text ab 18 Punkt oder 14 Punkt fett. Das ist der Zielwert für einen Kontrastmodus. Im Standardmodus reichen 4,5:1 und 3:1 nach Kriterium 1.4.3, das über EN 301 549 und BFSG verbindlich ist.
Wie teste ich 2026 den Kontrastmodus automatisiert?
In Cypress lässt sich window.matchMedia beim Seitenaufruf überschreiben, sodass prefers-contrast oder prefers-color-scheme simuliert werden. Danach prüft axe-core mit den Regeln color-contrast und color-contrast-enhanced. Letztere ist standardmäßig deaktiviert und muss explizit aktiviert werden. Den Windows Kontrastmodus prüft axe nicht, dort bleibt der manuelle Test.
Warum verschwinden Icons 2026 im Windows Kontrastmodus?
Der Kontrastmodus ersetzt alle Farben durch Systemfarben und entfernt Hintergrundbilder und Box Shadows. Icons als background-image sind dann weg. Die Lösung: Inline SVG mit fill currentColor, echte border statt box-shadow für Rahmen und ein outline statt box-shadow für den Fokus Ring. Testen lässt sich das über die forced-colors Emulation in Chrome und Edge.
Brauche ich 2026 einen Kontrast Schalter auf der Webseite?
Nicht zwingend. prefers-contrast liest die Systemeinstellung des Nutzers, das reicht in den meisten Fällen. Ein eigener Schalter ist sinnvoll für Kiosk Anwendungen, fremde Geräte oder Seiten mit sehr eigener Farbwelt. Wenn, dann als echter Button mit Tastaturbedienung und gespeicherter Einstellung, nie als Drittanbieter Overlay Widget.
Was ist der Unterschied zwischen Contrast Enhancement und Farbkontrast?
Farbkontrast ist die Messgröße: das Helligkeitsverhältnis zweier Farben und die Mindestwerte der WCAG. Contrast Enhancement ist die Praxis, diesen Kontrast über das Minimum zu heben und an Nutzereinstellungen anzupassen. Farbkontrast beantwortet, ob ein Farbpaar besteht. Contrast Enhancement beantwortet, wie die Seite auch für Menschen funktioniert, denen das Minimum nicht reicht.
Wie mache ich Text auf einem Hero Bild lesbar?
Mit einem halbtransparenten dunklen Overlay zwischen Bild und Text, meist 50 bis 60 Prozent Deckkraft für weißen Text. Alternativ bekommt der Text einen eigenen deckenden Hintergrund. Text Shadow hilft nur bei kurzen Headlines und wird von Kontrast Tools nicht gemessen. Für die WCAG zählt immer die schlechteste Stelle im Bild, nicht der Durchschnitt.
Was bedeutet prefers-contrast: less?
Manche Nutzer brauchen weniger Kontrast, etwa bei Migräne, Lichtempfindlichkeit oder bestimmten Formen von Legasthenie. Das Betriebssystem meldet das über prefers-contrast: less. Eine Seite kann darauf reagieren, indem sie reines Schwarz auf reinem Weiß leicht abmildert, etwa dunkles Grau auf hellem Grau, ohne unter die WCAG Mindestwerte zu fallen.
Sind Accessibility Overlays eine Lösung für Kontrast?
Nein. Overlay Widgets von Drittanbietern versprechen Kontrast, Schriftgröße und Vorlesen per Knopfdruck, ersetzen aber keine barrierefreie Umsetzung. Sie kollidieren oft mit Screenreadern, sind selbst nicht immer barrierefrei und gelten gegenüber der Marktüberwachung nicht als Nachweis. Ein eigener Kontrastmodus über CSS Tokens ist schlanker und zuverlässiger.
Was sind CSS Systemfarben wie CanvasText und Highlight?
CSS Schlüsselwörter, die im forced-colors Modus die vom Nutzer im Betriebssystem gewählten Farben annehmen. CanvasText ist die Textfarbe, Canvas der Hintergrund, ButtonText und ButtonFace gelten für Buttons, Highlight für Auswahl und Fokus, LinkText für Links. Wer sie in der forced-colors Media Query nutzt, bleibt automatisch im Farbschema des Nutzers.
Was ist APCA und ersetzt es die WCAG Kontrastformel?
APCA ist ein Kontrastmodell, das für WCAG 3 entwickelt wird. Es bildet die wahrgenommene Helligkeit besser ab als das heutige Verhältnis und bezieht Schriftgröße und Gewicht ein. Verbindlich ist es noch nicht, WCAG 2.2 und die EN 301 549 nutzen weiterhin das Verhältnis. Wer Farben als Tokens verwaltet, kann die Messmethode später einfach tauschen.
Reicht Dark Mode als Kontrastverstärkung?
Nein. Dark Mode ist eine Vorliebe für dunkle Oberflächen, kein Kontrastmodus. Viele Dark Mode Paletten haben sogar geringeren Kontrast als der helle Modus, etwa Grau auf Dunkelgrau. Jede Farbe braucht deshalb einen eigenen geprüften Wert für hell, dunkel und hohen Kontrast. Alle drei Varianten gehören in die automatisierte Prüfung.