Tab sayfada anlamlı bir sırayla ilerlemelidir. Yanlış yerleştirilmiş hata özetleri, gizli çekmeceler ve adım değişikliğinden sonra kaybolan odak bunu bozar.
2.4.3 başarı ölçütü, bir sayfada sırayla gezinilebiliyorsa ve bu sıra anlamı ya da işletimi etkiliyorsa geçerlidir. Odaklanabilir bileşenler, anlamı ve işletilebilirliği koruyan bir sırayla odak almalıdır.
Sıranın görsel yerleşimle birebir aynı olması gerekmez ve sayfa anlaşılır ve işletilebilir kaldığı sürece okuma sırasından farklı olabilir. Yapmaması gereken, sayfadaki ilişkileri bozan bir yere atlamaktır; örneğin bir alandan, kalan alanlardan önce "Gönder" düğmesine geçmek ya da görünmeyen içeriğin içine inmek.
Ağaç ya da sekme listesi gibi bileşik bir bileşenin içindeki ok tuşu hareketi, bu ölçüt kapsamında sıralı gezinme sayılmaz.
Okul kaydı ve izin başvuruları çok adımlıdır; bu, bu sorunları sık ve maliyetli yapar: bir kişi odak sayfanın yanlış yerindeyken formun yarısını doldurabilir.
Başarısız bir gönderimden sonra sorunların özeti formdan önce gelmeli ve odağı almalıdır.
form.addEventListener("submit", e => {
const errors = validate();
if (errors.length) {
e.preventDefault();
document.body.append(buildSummary(errors)); // formun çok altında
}
});form.addEventListener("submit", e => {
const errors = validate();
if (errors.length) {
e.preventDefault();
const summary = buildSummary(errors);
summary.tabIndex = -1;
form.before(summary);
summary.focus();
}
});Bir çekmeceyi dönüşümle ekran dışına almak, onu klavye gezintisinden çıkarmaz. Odak görünmeyen bağlantılara inebilir.
.drawer { transform: translateX(-100%); }
.drawer.open { transform: none; }.drawer { transform: translateX(-100%); visibility: hidden; }
.drawer.open { transform: none; visibility: visible; }
/* ya da kapalıyken: <aside class="drawer" inert> */Bir adım değiştirildiğinde odak yeni adımın başlığına gitmeli; böylece sonraki Tab ilk alana ulaşır.
nextBtn.addEventListener("click", () => {
stepContainer.innerHTML = renderStep(2); // odak kayboluyor
});nextBtn.addEventListener("click", () => {
stepContainer.innerHTML = renderStep(2);
const h = stepContainer.querySelector("h2");
h.tabIndex = -1;
h.focus();
});Ekran okuyucular ve anahtar erişimi, görsel yerleşimden ayrışabilen anlamsal sırayı izler. Aşağıdaki Compose özellikleri Compose UI 1.5 ya da üstünü gerektirir ve deneysel API izni isteyebilir. SwiftUI:
ZStack {
PayButton()
AmountDue(amount)
}ZStack {
PayButton().accessibilitySortPriority(1)
AmountDue(amount).accessibilitySortPriority(2)
}
.accessibilityElement(children: .contain)Jetpack Compose:
Box {
PayButton(onPay, Modifier.align(Alignment.BottomEnd))
AmountDue(amount)
}Box(Modifier.semantics { isTraversalGroup = true }) {
AmountDue(amount, Modifier.semantics { traversalIndex = 0f })
PayButton(
onPay,
Modifier.align(Alignment.BottomEnd)
.semantics { traversalIndex = 1f }
)
}Sık yapılan hatalar, sayfayı yeniden sıralayan pozitif tabindex değerleri ve kaynak sırası farklı kalırken öğeleri görsel olarak yeniden sıralayan CSS'tir. Araçlar pozitif tabindex'i işaretleyebilir, ama sıranın anlamlı olup olmadığına karar veremez.
Mobil ekranlarda sırayı yalnızca bakarak değil, bir ekran okuyucu açıkken gözden geçirin. Title II kuralının nasıl uygulandığı için mobil uygulamalar sayfasına bakın.
Corpowid, dijital erişilebilirlik alanındaki yenilikçi yaklaşımı ve performansı nedeniyle dünyanın önde gelen araştırma ve danışmanlık şirketlerinden biri olan Gartner tarafından takdir edilmiştir. Bu rozetler, yapay zeka destekli ve kapsayıcı web deneyimleri oluşturma konusundaki kararlılığımızı yansıtmaktadır.