Krótko
Jeśli użytkownik ma coś przeciągnąć, powinien dostać prostszy sposób wykonania tej samej czynności, np. przyciski, listę wyboru, menu akcji albo pole wartości.
Funkcjonalność · Poziom AA
Akcje wymagające przeciągania, na przykład zmiany kolejności, muszą dać się wykonać także przyciskami albo inną metodą niewymagającą przeciągania.
Jeśli użytkownik ma coś przeciągnąć, powinien dostać prostszy sposób wykonania tej samej czynności, np. przyciski, listę wyboru, menu akcji albo pole wartości.
Przeciąganie bywa wygodne, ale wymaga przytrzymania wskaźnika, przesunięcia go po określonej ścieżce i puszczenia w odpowiednim miejscu. Dla części osób to jest trudne albo niemożliwe, nawet jeśli mogą kliknąć lub stuknąć pojedynczy przycisk.
Problem pojawia się, gdy sortowanie elementów działa tylko przez drag and drop, kolejność kart można zmienić wyłącznie przeciąganiem, zakres wybiera się tylko uchwytami suwaka, lokalizację ustawia się tylko przez przesuwanie pinezki na mapie, a plik można dodać wyłącznie przez przeciągnięcie do strefy.
2.5.7 nie zakazuje przeciągania. Wymaga alternatywnej drogi wykonania tej samej funkcji bez ruchu przeciągania, chyba że przeciąganie jest istotą funkcji albo działanie należy do wyjątków WCAG.
Interfejs może nadal obsługiwać drag and drop, ale obok niego pokazuje jasną alternatywę. Użytkownik może wykonać tę samą funkcję zwykłym kliknięciem, wyborem z listy albo wpisaniem wartości.
Zły wzorzec zakłada, że użytkownik zawsze potrafi przeciągnąć element. Nie daje przycisku, menu, pola wartości ani innej ścieżki, która pozwala osiągnąć ten sam wynik.
Kod — HTML
<ol>
<li>
Raport kwartalny
<button type="button">
Przenieś w górę
</button>
<button type="button">
Przenieś w dół
</button>
</li>
<li>
Plan szkolenia
<button type="button">
Przenieś w górę
</button>
<button type="button">
Przenieś w dół
</button>
</li>
</ol>
Przeciąganie może nadal istnieć, ale użytkownik ma też jednoznaczne przyciski do zmiany kolejności. To jest ta sama funkcja wykonana bez ruchu przeciągania.
Kod — HTML
<div class="upload-drop-zone">
<p>
Możesz przeciągnąć plik tutaj albo wybrać go z dysku.
</p>
<label for="attachment">
Wybierz plik
</label>
<input
id="attachment"
name="attachment"
type="file"
>
</div>
Strefa przeciągania nie jest jedyną drogą. Użytkownik może użyć zwykłego pola pliku, które nie wymaga przeciągania.
Kod — HTML
<label for="price-range">
Maksymalna cena
</label>
<input
id="price-range"
name="price-range"
type="range"
min="0"
max="500"
value="200"
>
<label for="price-value">
Maksymalna cena w zł
</label>
<input
id="price-value"
name="price-value"
type="number"
min="0"
max="500"
value="200"
>
Suwak może zostać, ale pole liczbowe daje użytkownikowi inną drogę ustawienia tej samej wartości.
Kod — HTML
<p>
Przeciągnij karty, aby ustawić kolejność.
</p>
<ul class="cards">
<li draggable="true">Karta A</li>
<li draggable="true">Karta B</li>
<li draggable="true">Karta C</li>
</ul>
To zły przykład. Instrukcja i kod pokazują tylko przeciąganie. Brakuje przycisków, menu akcji, listy wyboru albo innej alternatywy.
Tylko przeciąganie. Brak innej drogi wykonania tej samej funkcji.
Alternatywa istnieje, ale jest niejasna albo trudna do odkrycia.
Ta sama funkcja jest dostępna bez ruchu przeciągania.