Co oznacza to kryterium
Kolor może pomagać rozpoznać stan, ale znaczenie musi pozostać widoczne bez rozróżnienia barw. Przy czerwonej ramce pokaż błąd tekstem, a przy wybranej dostawie dodaj znacznik lub napis. Sam opis dla czytnika nie wystarcza osobie widzącej, która nie odróżnia użytych kolorów.
Pomaga to osobom z ograniczonym rozróżnianiem barw i części osób słabowidzących, także przy ekranach o małej liczbie kolorów. Semantykę potrzebną do korzystania bez widzenia ocenia się osobno.
Przykłady błędów i poprawek
Status zamówienia
Własna Pracownia pokazuje trzy stany: „Dostarczono”, „W przygotowaniu” i „Anulowano”. Bad przekazuje je tylko zieloną, bursztynową i czerwoną kropką o tym samym kształcie. Różnice jasności użytych kolorów nie osiągają 3:1, a widoczny tekst nie wyjaśnia stanu. Legenda samych barw nadal wymagałaby ich rozpoznania.

Własna demonstracja Pracowni, 2026-10-02. Surowy obraz z rzeczywistego uruchomienia; daje kontekst, bez potwierdzenia odczytu czytnikiem.
Good dodaje widoczny tekst i różny symbol przy każdym statusie. Dane pozostają te same. Celowo pozostawiona semantyczna nazwa w bad pokazuje granicę: informacja tylko dla czytnika nie rozwiązuje widocznej bariery 1.4.1.

Własna demonstracja Pracowni, 2026-10-02. Surowy obraz z rzeczywistego uruchomienia; daje kontekst, bez potwierdzenia odczytu czytnikiem.
Błąd formularza
Po zapisaniu niepoprawnego „aleksandra” bad zmienia tylko kolor ramki pola. Good dodaje komunikat „Wpisz adres e-mail, np. ola@example.com.” Walidacja jest uproszczona i nie wysyła danych; identyfikację i sugestię błędu trzeba również rozpatrzyć w 3.3.1 i 3.3.3.

Własna demonstracja Pracowni, 2026-10-02. Surowy obraz z rzeczywistego uruchomienia; daje kontekst, bez potwierdzenia odczytu czytnikiem.

Własna demonstracja Pracowni, 2026-10-02. Surowy obraz z rzeczywistego uruchomienia; daje kontekst, bez potwierdzenia odczytu czytnikiem.
Wybór dostawy i zmiana stanu
W bad Punkt odbioru i Kurier mają takie samo tło i styl ramki; tylko barwa obrysu wskazuje wybór. Good dodaje znacznik i „Wybrano”. Semantyczne selected występuje w obu wariantach, oddzielając tę barierę od dostępnego stanu.

Własna demonstracja Pracowni, 2026-10-02. Surowy obraz z rzeczywistego uruchomienia; daje kontekst, bez potwierdzenia odczytu czytnikiem.

Własna demonstracja Pracowni, 2026-10-02. Surowy obraz z rzeczywistego uruchomienia; daje kontekst, bez potwierdzenia odczytu czytnikiem.
Po dotknięciu Kuriera znacznik i napis przenoszą się do niego. To trwały skutek rzeczywistej interakcji XCTest, bez nowego nagrania lub testu czytnika.

Własna demonstracja Pracowni, 2026-10-02. Surowy obraz z rzeczywistego uruchomienia; daje kontekst, bez potwierdzenia odczytu czytnikiem.
Te obrazy dokumentują odświeżenie Cupertino z 2026-10-02. Istniejące odpowiedniki Android Material i historyczne filmy pozostają w researchu; nie są nowym wykonaniem podczas konwersji ani dowodem obecnego iOS Material.
Kiedy obowiązuje i gdzie są wyjątki
- Dotyczy koloru przekazującego informację, wskazującego działanie, oczekiwaną reakcję lub różnicę między elementami. Dekoracyjna zmiana koloru bez takiego znaczenia nie jest automatycznie błędem.
- Wskazówka musi być widoczna. Samo
accessibilityLabel,contentDescriptionlubSemanticsnie wystarczy dla osoby widzącej, która nie rozróżnia barw. - Różnica jasności przy kontraście co najmniej 3:1 może być dodatkową wskazówką przy rozróżnianiu elementów. Jeżeli trzeba wiedzieć, który konkretnie kolor oznacza dany stan, wciąż potrzebna jest inna informacja.
Nie przenosić progu 3:1 na wszystkie zastosowania koloru. Wymagania kontrastu tekstu (1.4.3) i elementów nietekstowych (1.4.11) bada się osobno. W przypadku linków w tekście różnica jasności może wymagać dodatkowej wskazówki przy fokusie lub najechaniu; nie należy streszczać tego do zasady „sam kolor zawsze wystarczy przy 3:1”.
Platformy
Sprawdź 1.4.1, jeżeli kolor przekazuje znaczenie, np. status, błąd lub wybór. Typ urządzenia nie usuwa tej bariery. Kolor użyty wyłącznie dekoracyjnie nie uruchamia tego warunku.
| Środowisko | Sposób zastosowania | Przykład informacji wymagającej alternatywy dla koloru |
|---|---|---|
| WWW i aplikacje webowe, także w przeglądarce telefonu | WCAG: bez zmiany wymagania. | Status zamówienia lub błąd formularza. |
| Aplikacje mobilne, np. Android i iOS | WCAG2ICT: bez zmiany wymagania. | Zaznaczona opcja dostawy. |
| Aplikacje desktopowe, np. Windows, macOS i Linux | WCAG2ICT: bez zmiany wymagania. | Status synchronizacji pliku. |
| Dokumenty cyfrowe poza WWW, np. PDF | WCAG2ICT: bez zmiany wymagania. | Kategorie wykresu rozróżniane kolorem. |
| Oprogramowanie innych urządzeń z wizualnym interfejsem, np. kiosku lub telewizora | Dla części webowej jak WWW; dla oprogramowania poza WWW interpretacja WCAG2ICT bez zmiany wymagania 1.4.1. | Wybrana opcja lub informacja o powodzeniu operacji. |
Weryfikacja merytoryczna zastosowania: AI, 2026-10-01; WCAG 2.2 i interpretacja WCAG2ICT dla 1.4.1. Przykłady uruchomiono tylko jako Flutter na Androidzie i iOS. Pozostałe wiersze opisują zastosowanie wymagania, nie potwierdzone testy tych środowisk. W urządzeniach innych niż komputer lub telefon tabela dotyczy treści i oprogramowania, nie całości wymagań sprzętowych. W aplikacji hybrydowej rozróżnić część webową i natywną. Zakres obowiązków prawnych ocenia się osobno; pozostaje wymagany przegląd interpretacji przez człowieka.
Źródło nie wskazuje daty wydania użytej WCAG2ICT. Zachowujemy jego datę i status odczytu; konwersja nie jest ponowną weryfikacją normy.
Rozwiązania w technologiach
Najprostsza poprawka statusu w każdej technologii to widoczny tekst opisujący stan. Kolor i symbol są dodatkiem. Poniżej krótkie fragmenty edukacyjne do osadzenia w interfejsie. Działająca demonstracja korzysta ze wspólnego Fluttera; nie wymaga powielenia testu w czterech frameworkach. Samo przepisanie fragmentu nie potwierdza zgodności pozostałych ekranów.
Android / Compose
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.Color
@Composable
fun OrderStatus(delivered: Boolean) {
Text(
text = if (delivered) "Dostarczono" else "W przygotowaniu",
color = if (delivered) Color(0xFF286443) else Color(0xFF926100)
)
}Widoczny Text usuwa konieczność rozpoznawania koloru. Własny contentDescription nie może go zastępować. Status: przegląd dokumentacji; fragment niekompilowany i nietestowany w aplikacji Compose. Nie przypisano wersji zależności, której nie użyto.
iOS / SwiftUI
import SwiftUI
struct OrderStatus: View {
let delivered: Bool
var body: some View {
Label(
delivered ? "Dostarczono" : "W przygotowaniu",
systemImage: delivered ? "checkmark.circle" : "clock"
)
.labelStyle(.titleAndIcon)
.foregroundStyle(delivered ? Color.green : Color.brown)
}
}Label pokazuje tekst i symbol; .titleAndIcon zachowuje oba w tej prezentacji. Status: kompilator Xcode 27.0 sprawdził typy fragmentu dla iOS Simulator / arm64 / iOS 15.0; brak testu działania natywnej aplikacji SwiftUI i VoiceOver. Kolory fragmentu są ilustracyjne i wymagają sprawdzenia kontrastu w docelowym interfejsie.
Flutter
Row(children: [
const ExcludeSemantics(
child: Icon(Icons.check_circle_outline, color: Color(0xFF286443)),
),
const SizedBox(width: 8),
const Flexible(child: Text('Dostarczono')),
])Fragment wymaga package:flutter/material.dart i osadzenia w widżecie. Dekoracyjny symbol jest wyłączony z semantyki przez ExcludeSemantics, ponieważ widoczny tekst przekazuje znaczenie. Na Androidzie przykład korzysta z Material, na iOS z Cupertino i ikon CupertinoIcons; widoczny tekst statusu pozostaje ten sam. Dla formularza użyć widocznego errorText w Material lub tekstu pod CupertinoTextField; stan wybrania przekazywać także przez Semantics.selected. Status: Flutter 3.44.9 / Dart 3.12.2; pierwotne buildy Material na Androidzie i iOS z 2026-10-01. Odświeżenie Cupertino 2026-10-02: analiza, siedem testów widgetów, build iOS oraz jeden natywny XCTest PASS, oględziny siedmiu nowych screenshotów. Androida nie budowano ponownie.
React Native
import { Text, View } from 'react-native';
export function OrderStatus({ delivered }: { delivered: boolean }) {
return (
<View>
<Text style={{ color: delivered ? '#286443' : '#926100' }}>
{delivered ? 'Dostarczono' : 'W przygotowaniu'}
</Text>
</View>
);
}Znaczenie pozostaje w widocznym Text. Dla interaktywnego wyboru dodać widoczny znacznik i właściwe accessibilityState; sam stan dla czytnika nie usuwa błędu 1.4.1. Status: przegląd dokumentacji; fragment niekompilowany i nietestowany w aplikacji React Native. Nie deklarujemy sprawdzonej wersji frameworka.
Jak sprawdzić
- Znajdź informację kodowaną kolorem: status, błąd, wybór, legendę wykresu lub akcję.
- Ustal, co użytkownik ma z niej zrozumieć. Sprawdź widoczną wskazówkę niezależną od barwy i dostępny kontekst.
- Dla stanu interaktywnego wykonaj akcję, np. wybierz Kuriera lub zapisz niepoprawny adres. Sprawdź, czy wskazówka aktualizuje się razem ze stanem.
- Rozważ różnicę jasności i warunki z sekcji „Kiedy obowiązuje i gdzie są granice”. Widok w szarości może pomóc w oględzinach, ale nie zastępuje tej oceny i nie symuluje wszystkich zaburzeń widzenia.
- Zapisz obserwację i zakres, np. „w tym stanie błąd wskazano wyłącznie kolorem ramki”. Nie wnioskuj o całej aplikacji z jednej pary ekranów.
Weryfikacja i ograniczenia
Weryfikacja merytoryczna AI pochodzi z 2026-10-01; odświeżenie iOS do Cupertino wykonano 2026-10-02. Wszystkie dane Pracowni są syntetyczne.
| Sprawdzenie | Wynik i granica |
|---|---|
| Wymaganie i dokumentacja | Przegląd AI; interpretacja i pary bez zatwierdzenia człowieka |
| Flutter 3.44.9 / Dart 3.12.2 | Pierwotne buildy Material Android/iOS z 2026-10-01 |
| Cupertino, 2026-10-02 | Analiza, 7 testów widgetów, build iOS i 1 natywny XCTest PASS; 7 screenshotów obejrzanych przez AI |
| Android | Historyczne uruchomienie Material i obrazy adb; nie budowano ponownie podczas wymiany iOS |
| SwiftUI | Typecheck PASS, Xcode 27.0, iOS Simulator arm64 / cel iOS 15; runtime NOT-RUN |
| Compose i React Native | Dokumentacja sprawdzona; fragmenty bez kompilacji lub runtime |
| VoiceOver i przegląd człowieka | NOT-RUN; nie podkładano syntezy jako czytnika |
Widgety i XCTest potwierdzają wybór, walidację i warianty w zadanym scenariuszu. Screenshoty Cupertino są rzeczywistym XCUIScreen. Historyczne filmy Androida i Material iOS pokazują interakcję bez audio; nie są dowodem obecnego Cupertino, VoiceOver lub jakości doświadczenia człowieka. Główne medium tego wymagania stanowią obrazy; nie osadzono starych nagrań.
Reguła może mierzyć kolory przy znanym tle, ale potrzebuje kontekstu znaczenia. Sama kropka może być dekoracją; czerwona ramka może mieć równoważny tekst. Ocena AI jest wskazówką wymagającą odpowiednich dowodów. Semantyczny status w drzewie nie zastępuje widocznej informacji. Niepełny kontekst i brak wykrycia błędu nie oznaczają spełnienia; oczekiwania demonstracji nie są wejściem niezależnego benchmarku.
Jak sprawdza Clearship
Clearship mierzy kolory na obrazach i szuka widocznych wskazówek dla odnośników, wybranych opcji oraz pól z obrysem. Dla nierozstrzygniętego znaczenia grafiki lub tekstu korzysta z oceny AI albo człowieka. Metoda use-of-color-2 dotyczy zebranych stanów natywnych w jasnym i ciemnym wyglądzie.
Android z oceną AI jest poniżej progu pomiaru kontrolnego; iOS ma częściowy pomiar rozwojowy, bez kontrolnego i bez wykonanej oceny AI. Katalog zachowuje ocenę człowieka. Małe kropki i wskaźniki bez węzła, część grafiki, treść WebView oraz stan po akcji niezapisany na trasie pozostają poza zakresem. W szczególności metoda nie wykrywa automatycznie samych małych kropek z przykładu statusu. Semantyczna nazwa i widok w szarości nie potwierdzają widocznej alternatywy; brak znaleziska nie oznacza spełnienia całego kryterium.