1.4.1Poziom A

Użycie koloru

Use of Color

Informację, działanie lub stan oznaczone kolorem przedstaw także przez inną widoczną wskazówkę.

Komu pomaga
Rozróżnianie barwSłabowidzenie
Zastosowanie
WWWAplikacje mobilneAplikacje desktopoweDokumenty cyfroweInne urządzenia

Warunki i wyjątki opisano w artykule.

Wersja
WCAG 2.2, wprowadzone w 2.0
Zasada / wytyczna
Postrzegalność / 1.4
Stan researchu
Draft AI. Bez przeglądu człowieka.
Redakcja artykułu
· wersja robocza
Na tej stronie

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.

Pracownia iOS Cupertino: trzy zamówienia oznaczone tylko barwnymi kropkami, bez widocznych nazw statusu.

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.

Pracownia iOS Cupertino: przy każdym zamówieniu nazwa statusu Dostarczono, W przygotowaniu albo Anulowano i odpowiadający symbol.

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.

Pracownia iOS: niepoprawny adres aleksandra ma tylko czerwoną ramkę bez komunikatu.

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

Pracownia iOS: ten sam adres z widocznym komunikatem Wpisz adres e-mail, np. ola@example.com.

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.

Pracownia iOS: Punkt odbioru ma niebieską ramkę, Kurier szarą, bez widocznego opisu wyboru.

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

Pracownia iOS: Punkt odbioru ma znacznik i napis Wybrano.

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.

Pracownia iOS Cupertino: po dotknięciu Kuriera wybrana opcja ma znacznik i napis Wybrano.

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, contentDescription lub Semantics nie 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ć

  1. Znajdź informację kodowaną kolorem: status, błąd, wybór, legendę wykresu lub akcję.
  2. Ustal, co użytkownik ma z niej zrozumieć. Sprawdź widoczną wskazówkę niezależną od barwy i dostępny kontekst.
  3. Dla stanu interaktywnego wykonaj akcję, np. wybierz Kuriera lub zapisz niepoprawny adres. Sprawdź, czy wskazówka aktualizuje się razem ze stanem.
  4. 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.
  5. 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.

Powiązane kryteria