Kolory
- Unikaj używania koloru tylko do przekazywania informacji. W przypadku łączy użyj innego identyfikatora, takiego jak pogrubienie lub podkreślenie, aby wskazać tekst łącza za pomocą samego koloru.
- Niektórzy użytkownicy mają trudności z odczytaniem tekstu, jeśli kontrast między pierwszym planem a tłem jest zbyt mały. Aby zachować zgodność z poziomem AA, tekst musi mieć współczynnik kontrastu co najmniej 4,5:1 (lub 3:1 w przypadku dużego tekstu). Aby spełnić wytyczne na bardziej rygorystycznym poziomie AAA, współczynnik kontrastu musi wynosić co najmniej 7:1 (lub 4,5:1 w przypadku dużego tekstu).
Zasoby
- Dodatek do Chrome: Color Contrast Analyzer - najlepszy sposób na identyfikację gradientów i obrazów tła w witrynie
- Color Blindness Simulator - zobacz, jak Twoja witryna wygląda dla osoby z jedną z różnych form ślepoty barw
- Color Safe - dostępne palety kolorów oparte na wytycznych WCAG
- Contrast Checker - przetestuj kombinacje kontrastu kolorów w oparciu o wytyczne WCAG
- Dodatek do Firefoksa WCAG Contrast Checker - najłatwiejszy sposób na szybkie przetestowanie witryny i wyświetlenie listy problemów CSS
- Losowe palety kolorów A11y - spróbu wybrać piękną, losową paletę kolorów, które jest w pełni przyjazne
- Wyszukiwarka kolorów - najlepszy sposób na znalezienie zbliżonych kolorów zgodnych z WCAG 2.1
Wytyczne WCAG 2.1
1.4.1. Użycie koloru - Kolor nie jest wykorzystywany jako jedyny wizualny sposób przekazywania informacji, wskazywania czynności do wykonania lub oczekiwania na odpowiedź, czy też wyróżniania elementów wizualnych. (Poziom A)
1.4.3 Kontrast (Minimum) - Wizualna prezentacja tekstu lub obrazu tekstu posiada współczynnik kontrastu wynoszący przynajmniej 4.5:1, poza kilkoma wyjątkami. (Poziom AA)
1.4.11 Kontrast elementów nietekstowych - Wizualna prezentacja komponentów interfejsu użytkownika oraz części obiektów graficznych wymaganych do zrozumienia tresci ma współczynnik kontrastu co najmniej 3:1 względem sąsiednich kolorów. (Poziom AA)
Podstawowe
#77408e
#df1465
#e00000
#a51323
#7fffd4
#42dc42
#4083ae
#0a3055
#ffa0e5
#550055
Czarne, białe, szarości
#000000
#464646
#888b8d
#bbbbbb
#dddddd
#f4f4f4
#f7f7f7
#ffffff
Powiadomienia
#e00000
#218003
<h3>Podstawowe</h3>
<div class="kss-swatch" style="background-color: #77408e">
<div class="kss-swatch__hex">$color-primary<br>#77408e</div>
</div>
<div class="kss-swatch" style="background-color: #df1465" >
<div class="kss-swatch__hex">$color-secondary<br>#df1465</div>
</div>
<div class="kss-swatch" style="background-color: #e00000">
<div class="kss-swatch__hex">$color-cherry<br>#e00000</div>
</div>
<div class="kss-swatch" style="background-color: #a51323">
<div class="kss-swatch__hex">$color-ruby<br>#a51323</div>
</div>
<div class="kss-swatch" style="background-color: #7fffd4">
<div class="kss-swatch__hex">$color-sea-glass<br>#7fffd4</div>
</div>
<div class="kss-swatch" style="background-color: #42dc42">
<div class="kss-swatch__hex">$color-grass<br>#42dc42</div>
</div>
<div class="kss-swatch" style="background-color: #4083ae">
<div class="kss-swatch__hex">$color-cornflower<br>#4083ae</div>
</div>
<div class="kss-swatch" style="background-color: #0a3055">
<div class="kss-swatch__hex">$color-navy<br>#0a3055</div>
</div>
<div class="kss-swatch" style="background-color: #ffa0e5">
<div class="kss-swatch__hex">$color-ballet-slipper<br>#ffa0e5</div>
</div>
<div class="kss-swatch" style="background-color: #550055">
<div class="kss-swatch__hex">$color-eggplant<br>#550055</div>
</div>
<div class="break"></div>
<h3>Czarne, białe, szarości</h3>
<div class="kss-swatch" style="background-color: #000000">
<div class="kss-swatch__hex">$color-black<br>#000000</div>
</div>
<div class="kss-swatch" style="background-color: #464646">
<div class="kss-swatch__hex">$color-midnight<br>#464646</div>
</div>
<div class="kss-swatch" style="background-color: #888b8d">
<div class="kss-swatch__hex">$color-manatee<br>#888b8d</div>
</div>
<div class="kss-swatch" style="background-color: #bbbbbb">
<div class="kss-swatch__hex">$color-silver<br>#bbbbbb</div>
</div>
<div class="kss-swatch" style="background-color: #dddddd">
<div class="kss-swatch__hex">$color-alto<br>#dddddd</div>
</div>
<div class="kss-swatch" style="background-color: #f4f4f4">
<div class="kss-swatch__hex">$color-gallery<br>#f4f4f4</div>
</div>
<div class="kss-swatch" style="background-color: #f7f7f7">
<div class="kss-swatch__hex">$color-alabaster<br>#f7f7f7</div>
</div>
<div class="kss-swatch" style="background-color: #ffffff">
<div class="kss-swatch__hex">$color-white<br>#ffffff</div>
</div>
<div class="break"></div>
<h3>Powiadomienia</h3>
<div class="kss-swatch" style="background-color: #e00000">
<div class="kss-swatch__hex">$notification-color-error<br>#e00000</div>
</div>
<div class="kss-swatch" style="background-color: #218003">
<div class="kss-swatch__hex">$notification-color-success<br>#218003</div>
</div>
Skopiowane!
Łącza z fokusem
- Nie ustawiaj dla łączy stylu
outline: none
. Nigdy. Nigdzie. - Jeśli masz wiele pól formularza na swojej stronie lub widzisz okropny
outline: none
w kodzie podstawowym, możesz zresetować domyślne ustawienia przeglądarki poprzez dodanie kodu:
a:focus { outline: auto 2px Highlight; // dla przeglądarek non-webkit outline: auto 5px -webkit-focus-ring-color; // dla przeglądarek webkit }
- Oczywiście możesz tworzyć własne style fokusu, aby dopasować je do swojego motywu lub sprawić, że domyślne style przeglądarki będą bardziej widoczne, po prostu upewnij się, tabulując, że są one widoczne i oczywiste dla użytkowników.
Wytyczne WCAG 2.1
2.4.7 Widoczny fokus - Każdy interfejs posiadający możliwość obsługi przy pomocy klawiatury ma tryb obsługi, w którym fokus klawiatury jest stale widoczny. (Poziom AA)
<section class="link-focus-section">
<a href="#">Hej! Jestem fajnym, łączem z fokusem.</a>
</section>
Skopiowane!
Łącza Czytaj więcej
- Dodaj selektory id do tytułów lub akapitów i użyj
aria-labelledby=""
, aby połączyć się z tekstem tytułu (Przykład #1). - Dodaj tekst opisowy z
aria-label=""
bezpośrednio do łącza (Przykład #2). - Użyj klasy
visuallyhidden
, aby wizualnie ukryć więcej informacji o odnośniku (Przykład #3). Zauważ, że VoiceOver może powodować niezamierzoną kolejność czytania wizualnie ukrytych treści w elementach interaktywnych. - Zamień przeczytane więcej linków na przyciski, gdy tylko będzie to możliwe, ponieważ pozwalają one na więcej opcji etykietowania.
Wytyczne WCAG 2.1
2.4.4 Cel łącza (w kontekście): Cel każdego łącza może wynikać z samej treści łącza lub z treści tekstu powiązanego z kontekstem łącza określonym programowo, poza tymi przypadkami, kiedy cel łącza i tak byłby niejasny dla użytkowników (Poziom A)
2.4.9 Cel łącza (z samego łącza): Istnieje mechanizm umożliwiający zidentyfikowanie celu każdego łącza z samej jego treści, poza tymi przypadkami, kiedy cel łącza i tak byłby niejasny dla użytkowników (Poziom AAA)
Przykład #1: Zastosowanie aria-labelledby
Sztormy uderzyły w wschodnie wybrzeże
Ulewne deszcze i wichury uderzyły w wschodnie wybrzeże, powodując powodzie w wielu przybrzeżnych miastach. Czytaj więcej
Przykład #2: Zastosowanie aria-label
Czarne niedźwiedzie uwięzione w samochodach
W ciągu ostatnich trzech tygodni pojawiło się 15 zgłoszeń lub czarnych niedźwiedzi uwięzionych w pojazdach. Istnieje kilka sposobów, aby temu zapobiec. Czytaj więcej
Przykład #3: Zastosowanie tekstu ukrytego wizualnie
Masowa histeria
Ogień i siarka, spadające z nieba. Rzeki i morza gotujące się... Ofiara z człowieka, psy i koty, żyjące razem...
Czytaj więcej o masowej histerii w odniesieniu do cytatów z filmów
<section class="read-more-section">
<h3>Przykład #1: Zastosowanie aria-labelledby</h3>
<h4 id="headline" class="bold">Sztormy uderzyły w wschodnie wybrzeże</h4>
<p>Ulewne deszcze i wichury uderzyły w wschodnie wybrzeże, powodując powodzie w wielu przybrzeżnych miastach. <a href="#" id="this_link" aria-labelledby="this_link headline" class="read-more">Czytaj więcej</a></p>
<div class="break"></div>
<h3>Przykład #2: Zastosowanie aria-label</h3>
<h4 class="bold">Czarne niedźwiedzie uwięzione w samochodach</h4>
<p>W ciągu ostatnich trzech tygodni pojawiło się 15 zgłoszeń lub czarnych niedźwiedzi uwięzionych w pojazdach. Istnieje kilka sposobów, aby temu zapobiec. <a href="#" aria-label="Dowiedz się więcej o uwięzionych czarnych niedźwiedziach" class="read-more">Czytaj więcej</a></p>
<div class="break"></div>
<h3>Przykład #3: Zastosowanie tekstu ukrytego wizualnie</h3>
<h4 class="bold">Masowa histeria</h4>
<p>Ogień i siarka, spadające z nieba. Rzeki i morza gotujące się... Ofiara z człowieka, psy i koty, żyjące razem...
<p><a href="#" class="read-more">Czytaj więcej<span class="visuallyhidden"> o masowej histerii w odniesieniu do cytatów z filmów</span></a></p>
</section>
Skopiowane!
Łącza pomijające
- Zapewnij użytkownikom możliwość przejścia do ważnych sekcji Twojej strony. Pomoże to użytkownikom korzystającym z czytników ekranu i osobom, które nie mogą posłużyć się myszą łatwiej i efektywniej poruszać się po Twojej stronie.
- Nie ma prawdziwej reguły tematycznej, jeśli chodzi o stylizację linków do stron, ponieważ wiele stron internetowych ma tendencję do ukrywania ich za pomocą
class="visuallyhidden"
(lub podobnej) ze specjalnym atrybutemfocus
, tak aby widzieli je tylko użytkownicy widzący. - Ważne jest, aby zobaczyć, że łącze wskazuje na poprawne ID elementu HTML, ponieważ często jest to pomijane w implementacji.
- Na tej stronie zastosowaliśmy 'Przejdź do treści głównej', ale inne ważne przykłady "łączy pomijania" obejmują:
Przejdź do treści
Przejdź do głównej treści
Przejdź do wyszukiwania
Przejdź do dolnej nawigacji
Przejdź do głównej nawigacji
Wytyczne WCAG 2.1
2.4.1 Możliwość pominięcia bloków - Istnieje mechanizm, który umożliwia pominięcie bloków treści powtarzanych na wielu stronach internetowych. (Poziom A)
Nagłówek
To jest pierwszy prawdziwy akapit. Wszystkie inne rzeczy są zwykłą bzdurą.
<section class="skip-links-section">
<div class="skip-links" tabindex="-1">
<a href="#maincontent">Do treści głównej</a>
<div class="hodor">Hodor hodor; hodor hodor; hodor hodor?! Hodor. Hodor hodor, hodor. Hodor HODOR hodor, hodor hodor... Hodor hodor hodor... Hodor hodor hodor, hodor, hodor hodor. Hodor hodor; hodor hodor; hodor hodor hodor! Hodor hodor hodor - hodor, hodor. Hodor hodor? Hodor! Hodor hodor, hodor hodor hodor... Hodor hodor hodor?!</div>
<h1><a name="maincontent" id="maincontent"></a> Nagłówek</h1>
<p>To jest pierwszy prawdziwy akapit. Wszystkie inne rzeczy są zwykłą bzdurą.</p>
</div>
</section>
Skopiowane!
Typografia
- Unikaj małych rozmiarów fontów.
- Użyj jednostek względnych dla rozmiaru czcionki, takich jak em lub rem. Chociaż nowoczesne przeglądarki internetowe mogą płynnie powiększać układy oparte na pikselach, stosowanie jednostek względnych zapewnia skalowanie całego układu w górę lub w dół poprzez prostą aktualizację rozmiaru czcionki elementu body.
- Projekt powinien umożliwiać powiększenie typografii nawet do 200% przez użytkownika bez przycinania lub zniekształcania treści.
- Wybieraj podstawowe, proste, łatwe do odczytania czcionki i używaj ograniczonej liczby czcionek.
- Unikaj małych rozmiarów czcionek i używaj względnych jednostek rozmiarów czcionek (ems lub rems).
- Ograniczaj stosowanie odmian czcionek, takich jak pogrubiona czcionka, kursywa i WSZYSTKIE WIELKIE LITERY (stosowanie CAPS jest podobne do krzyków czytników ekranu).
- Nie polegaj tylko na wyglądzie czcionki (kolor, kształt, odmiana czcionki, lokalizacja, itp.), aby przekazać znaczenie.
- Unikaj mrugania i przesuwania tekstu.
- W grafice używaj prawdziwego tekstu, a nie tekstu.
Wytyczne WCAG 2.1
1.4.1. Użycie koloru - Kolor nie jest wykorzystywany jako jedyny wizualny sposób przekazywania informacji, wskazywania czynności do wykonania lub oczekiwania na odpowiedź, czy też wyróżniania elementów wizualnych. (Poziom A)
1.4.3 Kontrast (Minimum) - Wizualna prezentacja tekstu lub obrazu tekstu posiada współczynnik kontrastu wynoszący przynajmniej 4.5:1, poza kilkoma wyjątkami. (Poziom AA)
1.4.4 Zmiana rozmiaru tekstu - Oprócz napisów rozszerzonych oraz obrazów tekstu, rozmiar tekstu może zostać powiększony do 200% bez użycia technologii wspomagających oraz bez utraty treści lub funkcjonalności. (Poziom AA)
1.4.5 Obrazy tekstu - Jeśli wykorzystywane technologie mogą przedstawiać treść wizualnie, do przekazywania informacji wykorzystuje się tekst, a nie obraz tekstu, z kilkoma wyjątkiem. (Poziom AA)
1.4.8 Prezentacja wizualna - Dla wizualnego przedstawienia bloków tekstu, istnieje mechanizm, za pomocą którego można osiągnąć, co następuje... (szczegóły zobacz w WCAG). (Poziom AAA)
Family: Open Sans
Family: Verdana
Family: Tahoma
Family: Georgia
<h2>Family: Open Sans</h2>
<div style="font: 20px/2 'Open Sans'">Regular</div>
<div style="font: italic 20px/2 'Open Sans'">Italic</div>
<div style="font: bold 20px/2 'Open Sans'">Bold</div>
<div style="font: bold italic 20px/2 'Open Sans'">Bold Italic</div>
<div class="break"></div>
<h2 style="font: 20px/2 'Verdana'">Family: Verdana </h2>
<div style="font: 20px/2 'Verdana'">Regular</div>
<div style="font: italic 20px/2 'Verdana'">Italic</div>
<div style="font: bold 20px/2 'Verdana'">Bold</div>
<div style="font: bold italic 20px/2 'Verdana'">Bold Italic</div>
<div class="break"></div>
<h2 style="font: 20px/2 'Tahoma'">Family: Tahoma </h2>
<div style="font: 20px/2 'Tahoma'">Regular</div>
<div style="font: italic 20px/2 'Tahoma'">Italic</div>
<div style="font: bold 20px/2 'Tahoma'">Bold</div>
<div style="font: bold italic 20px/2 'Tahoma'">Bold Italic</div>
<div class="break"></div>
<h2 style="font: 20px/2 'Georgia'">Family: Georgia </h2>
<div style="font: 20px/2 'Georgia'">Regular</div>
<div style="font: italic 20px/2 'Georgia'">Italic</div>
<div style="font: bold 20px/2 'Georgia'">Bold</div>
<div style="font: bold italic 20px/2 'Georgia'">Bold Italic</div>
Skopiowane!