TakéKontrastní poměr, Contrast ratio, Barevný kontrastZákladní

Definice

Kontrast textu je měřitelný rozdíl jasu mezi barvou písma a barvou pozadí, vyjádřený kontrastním poměrem od 1:1 do 21:1. Metodika WCAG požaduje pro běžný text alespoň 4,5:1 a pro velký text 3:1 na úrovni AA. Nízký kontrast znesnadňuje čtení lidem se slabším zrakem i uživatelům na slunci.

Kategorie: UX/UI designAktualizováno

Jak se kontrastní poměr počítá

Kontrastní poměr nepracuje s barvami tak, jak je vidí oko na monitoru, ale s relativní světlostí (relative luminance). Každá složka sRGB se nejprve linearizuje, pak se složky sečtou s vahami přibližně 0,2126 pro červenou, 0,7152 pro zelenou a 0,0722 pro modrou. Výsledné světlosti obou barev se dosadí do vzorce (L1 + 0,05) / (L2 + 0,05), kde L1 je světlejší barva. Rozsah je od 1:1 (identické barvy) po 21:1 (čistá černá na čisté bílé).

Velká váha zelené složky vysvětluje jev, který mnoho designérů překvapí: sytě žlutá je pro vzorec téměř stejně světlá jako bílá, kdežto sytě modrá je téměř černá. Barevný odstín sám o sobě do výpočtu nevstupuje, takže dvě výrazně odlišné barvy mohou mít kontrast pod 1,5:1 a text v nich prakticky zmizí.

Jaké hranice požaduje WCAG

  • AA, běžný text: minimálně 4,5:1.
  • AA, velký text: minimálně 3:1. Velkým textem se rozumí zhruba 18,66 px tučně nebo 24 px netučně.
  • AAA: 7:1 pro běžný text a 4,5:1 pro velký.
  • Netextové prvky: ohraničení polí formuláře, ikony nebo stavové indikátory potřebují alespoň 3:1 vůči okolí.

Výjimku mají loga a text, který je součástí fotografie. Dekorativní text skrytý před asistivními technologiemi se neposuzuje. Evropská norma EN 301 549, na kterou odkazuje český zákon o přístupnosti veřejného sektoru, přebírá úroveň AA jako závaznou, takže u webů úřadů nejde o doporučení, ale o povinnost. Souvislosti popisuje heslo Přístupnost.

Kde kontrast v praxi selhává

Nejčastějším zdrojem problémů je šedý text na bílé ploše, který v grafickém návrhu působí elegantně a v provozu na notebooku s lesklým displejem venku je nečitelný. Podobně riziková je bílá typografie na fotografii: kontrast se mění pixel po pixelu a stačí světlý pruh oblohy, aby titulek zmizel. Řešením bývá poloprůhledná vrstva pod textem nebo textový stín.

Druhou skupinou jsou stavy komponent. Tlačítko v klidu projde, ale jeho :disabled, :hover nebo placeholder v inputu ne. WCAG sice zakázané ovládací prvky z kritéria vyjímá, přesto uživatel potřebuje přečíst, co je v poli napsáno.

Třetí pastí je tmavý režim. Čistě bílý text na čistě černém pozadí dosahuje 21:1, jenže u lidí s astigmatismem způsobuje rozpití hran. Praxe se přiklání k velmi tmavě šedé ploše a světle šedému písmu, které stále překračuje 4,5:1.

Čím kontrast měřit

Kontrast se dá ověřit přímo v prohlížeči: DevTools ukazují poměr u vybraného elementu v panelu stylů a nástroj Lighthouse chybu vypíše v auditu přístupnosti. Automatická kontrola ale najde jen text nad jednolitou barvou; přechody, obrázky a videa musí posoudit člověk. Zvažte také funkci prefers-contrast v CSS, kterou lze uživatelům s požadavkem na vyšší kontrast nabídnout tvrdší paletu.

Příklady z praxe

  1. Šedý text v patičce neprojde auditem

    Patička e-shopu používá odstín #999999 na bílém pozadí, což dává poměr přibližně 2,85:1. Automatický audit označí všechny odkazy v patičce jako chybu úrovně AA. Ztmavení na #767676 posune poměr těsně nad 4,5:1, aniž by se vizuálně změnila hierarchie stránky.

    /* nedostatečné: cca 2,85:1 */
    .footer a { color: #999; background: #fff; }
    
    /* vyhovuje AA pro běžný text: cca 4,54:1 */
    .footer a { color: #767676; background: #fff; }
  2. Titulek nad fotografií

    Hero banner má bílý nadpis přes fotografii městské ulice. Nad tmavou fasádou je kontrast v pořádku, nad oblohou klesá pod 2:1 a slovo uprostřed titulku zaniká. Přidání tmavého překryvu s pevnou průhledností zajistí předvídatelné pozadí bez ohledu na to, jakou fotku redaktor nahraje.

    <div class="hero">
      <div class="hero__overlay"></div>
      <h2 class="hero__title">Doprava zdarma</h2>
    </div>

Časté omyly

MýtusKdyž jsou barvy hodně odlišné, kontrast je dostatečný.
Ve skutečnostiKontrastní poměr měří rozdíl světlosti, nikoli rozdíl odstínu. Sytě červená na sytě zelené jsou opticky velmi odlišné barvy, ale jejich poměr se pohybuje kolem 1,3:1 a text je prakticky nečitelný.
MýtusKontrast řeším jen kvůli nevidomým uživatelům.
Ve skutečnostiNevidomí uživatelé čtou obrazovku odečítačem a barvy je nezajímají. Kontrast pomáhá lidem se slabozrakostí, staršímu zraku, uživatelům levných displejů a komukoli, kdo se dívá na telefon na přímém slunci.
MýtusBílý text na černém pozadí je pro tmavý režim nejlepší volba.
Ve skutečnostiPoměr 21:1 je sice maximum, ale extrémní kontrast vyvolává halaci a rozpití hran písma, zvlášť u astigmatismu. Bezpečnější je tmavě šedé pozadí a mírně tlumené bílé písmo, které stále splňuje 4,5:1.

Časté dotazy

Jak změřit kontrast textu přímo v prohlížeči?
Kontrast textu ověříte v DevTools prohlížečů založených na Chromiu i ve Firefoxu. Po vybrání elementu se u vlastnosti color zobrazí vypočtený kontrastní poměr vůči zjištěnému pozadí spolu s informací, zda splňuje úroveň AA a AAA. Barevná pipeta navíc ukazuje hranici, pod kterou už odstín nevyhoví. Celý dokument najednou prověří audit přístupnosti v Lighthouse, který vypíše seznam prvků s nedostatečným poměrem. Automatické nástroje ale spolehlivě pracují jen s jednolitým pozadím, takže text nad fotografiemi, přechody nebo videem je nutné posoudit ručně.
Platí požadavek na kontrast textu i pro loga a ikony?
Kontrast textu se u log neposuzuje: WCAG dává logotypům a značkám výslovnou výjimku, protože jejich podoba je daná identitou firmy. Ikony a další netextová grafika ale výjimku nemají. Pokud ikona nese informaci nebo je součástí ovládacího prvku, musí mít vůči okolí poměr alespoň 3:1. Stejná hranice platí pro viditelné ohraničení formulářových polí, přepínačů a fokusového rámečku. Čistě dekorativní grafika, která nenese žádné sdělení a je skrytá před odečítačem obrazovky, se do kontroly nepočítá.
Jaký kontrast textu vyžaduje česká legislativa?
Kontrast textu na webech a v aplikacích veřejného sektoru se v Česku řídí zákonem o přístupnosti internetových stránek a mobilních aplikací, který odkazuje na evropskou normu EN 301 549. Ta přebírá kritéria WCAG na úrovni AA, tedy poměr 4,5:1 pro běžný text a 3:1 pro velký text a netextové prvky. Povinnost dopadá na úřady, školy, nemocnice a další subjekty veřejné správy. Komerční weby zákon přímo nezavazuje, směřování evropské legislativy k přístupnosti spotřebitelských služeb ale požadavky postupně rozšiřuje.
Musí splňovat kontrast i text v disabled tlačítku?
Kontrast textu u zakázaných ovládacích prvků WCAG explicitně vyjímá z kritéria 1.4.3, takže formálně chybu nezpůsobí. Z pohledu použitelnosti je ale ztlumené tlačítko na hranici viditelnosti problém: uživatel nepozná, co tlačítko dělá ani proč je nedostupné. Doporučený postup je držet u disabled stavu poměr alespoň kolem 3:1 a nedostupnost signalizovat i jinak než pouhým zesvětlením, například doplňujícím textem s vysvětlením podmínky. Stejná úvaha platí pro placeholder v poli, který uživatelé často čtou jako popisek.

Zdroje

  1. Web Content Accessibility Guidelines (WCAG) 2.2(otevře se v novém okně)W3C, 2023
  2. Understanding WCAG 2.2(otevře se v novém okně)W3C Web Accessibility Initiative
  3. WCAG 2 Overview(otevře se v novém okně)W3C Web Accessibility Initiative
  4. prefers-contrast(otevře se v novém okně)MDN Web Docs
  5. Zákon č. 99/2019 Sb., o přístupnosti internetových stránek a mobilních aplikací(otevře se v novém okně)Zákony pro lidi, 2019

Související pojmy

Potřebujete to vyřešit v praxi?

Poradíme, jak na to ve vašem projektu

Vysvětlit pojem je jedna věc, navrhnout kolem něj funkční řešení druhá. Ozvěte se a probereme, co dává smysl u vás.