Shopify Mağazanızın ADA'sını Erişilebilir Hale Getirme
ADA (Engelli Amerikalılar Yasası) e-ticaret web sitelerine karşı açılan davalar 2020 ile 2024 arasında %300 artarken, Shopify mağazaları da büyüyen hedef payına sahip oldu. Yasal uyumluluğun ötesinde, erişilebilirlik geliri doğrudan etkiliyor: ABD'li yetişkinlerin yaklaşık %26'sı engelli yaşıyor ve bu da 490 milyar dolarlık satın alma gücüne karşılık geliyor. Erişilemeyen bir mağaza bu müşterileri tamamen dışlar.
Bu kılavuz, pratik Shopify erişilebilirlik uygulamasını kapsar: e-ticaret için en önemli olan belirli WCAG 2.1 AA kriterleri, mevcut mağazanızın nasıl denetleneceği ve en yaygın ihlallere yönelik düzeltmeler.
Önemli Çıkarımlar
- WCAG 2.1 Düzey AA, ADA uyumluluğu için gereken standarttır - AAA değil, yalnızca Düzey A değil
- Klavyeyle gezinme her etkileşimli öğe için çalışmalıdır: gezinme, ürün seçimi, alışveriş sepeti ve ödeme
- Renk kontrast oranı normal metin için 4,5:1'i, büyük metin ve kullanıcı arayüzü bileşenleri için ise 3:1'i karşılamalıdır
- Ekran okuyucular, tüm ürün görselleri için anlamlı alternatif metinler ve tüm form alanları için anlamlı etiketler almalıdır
- Odak göstergeleri görsel olarak görünür olmalıdır; tarayıcılar birçok temada varsayılan olarak bunları gizler
- Shopify'ın ödeme işlemi Shopify tarafından yönetilir ve erişilebilir durumdadır ancak temanızın sepet çekmecesi erişilemeyebilir
- Otomatik erişilebilirlik denetleyicileri sorunların ~%30'unu yakalar; geri kalanı için manuel test gerekir
- Erişilebilirlik katmanları (accessiBe gibi) WCAG uyumluluğunu sağlamaz ve yasal riski artırır
E-ticaret için ADA ve WCAG Gereksinimlerini Anlamak
ADA, web siteleri için özel teknik standartlar içermemektedir. Mahkemeler, Web İçeriği Erişilebilirlik Yönergelerini (WCAG) tutarlı bir şekilde fiili standart olarak uygulamıştır; anlaşmaların ve kararların çoğunda Düzey 2.1 AA kabul edilen uyumluluk hedefidir.
WCAG 2.1 dört ilke etrafında düzenlenmiştir (POUR):
- Algılanabilir: Bilgiler ve kullanıcı arayüzü bileşenleri, kullanıcıların algılayabileceği şekilde sunulmalıdır (görsel içerik için alternatifler, ses için altyazılar, yeterli kontrast)
- Çalıştırılabilir: Kullanıcı arayüzü bileşenleri ve navigasyon çalıştırılabilir olmalıdır (klavyeden erişilebilir olmalı, görevleri tamamlamak için yeterli zaman olmalı, ele geçirmeye neden olacak içerik olmamalıdır)
- Anlaşılabilir: Bilgiler ve kullanıcı arayüzünün işleyişi anlaşılabilir olmalıdır (okunabilir dil, öngörülebilir davranış, giriş yardımı)
- Sağlam: İçerik, yardımcı teknolojiler tarafından yorumlanabilecek kadar sağlam olmalıdır
E-ticaret sitelerinde en sık dava edilen erişilebilirlik ihlalleri:
| İhlal | WCAG Kriteri | Frekans |
|---|---|---|
| Eksik resim alternatif metni | 1.1.1 Metin Dışı İçerik | Çok Yüksek |
| Yetersiz renk kontrastı | 1.4.3 Kontrast (Minimum) | Yüksek |
| Klavyeyle gezinme yok | 2.1.1 Klavye | Yüksek |
| Eksik form etiketleri | 1.3.1 Bilgi ve İlişkiler | Yüksek |
| Odak göstergesi yok | 2.4.7 Odak Görünür | Yüksek |
| Eksik sayfa başlıkları | 2.4.2 Sayfa Başlığı | Orta |
| Dil ayarlanmadı | 3.1.1 Sayfanın Dili | Orta |
| Erişilemeyen kalıcı iletişim kutuları | 4.1.2 Ad, Rol, Değer | Orta |
Erişilebilirlik Denetimi: Araçlar ve Süreç
Otomatik test araçları:
| Araç | Tür | Kapsam | Maliyet |
|---|---|---|---|
| balta Geliştirici Araçları | Tarayıcı uzantısı | Sorunların ~%30'u | Ücretsiz (Pro: 279$/yıl) |
| DALGA | Tarayıcı uzantısı + çevrimiçi | Sorunların ~%30'u | Ücretsiz |
| Deniz Feneri Erişilebilirliği | Chrome Geliştirme Araçları | Sorunların ~%30'u | Ücretsiz |
| Deque balta çekirdeği | CI/CD için npm paketi | Sorunların ~%30'u | Ücretsiz |
| Site iyileştirmesi | Kurumsal platform | Sorunların ~%40'ı | Kurumsal fiyatlandırma |
Otomatik araçlar yapısal sorunları bulur: eksik alternatif metin, eksik form etiketleri, kontrast hataları. Bulamıyorlar: anlamlı alternatif metin kalitesi, mantıksal klavye odak sırası, ekran okuyucu deneyimi, bilişsel karmaşıklık.
Manuel test süreci:
Adım 1 — Yalnızca klavyeyle gezinme testi: Farenizin bağlantısını kesin. Mağazanızda yalnızca Sekme (ileri), Shift+Sekme (geri), Enter (etkinleştir), Space (seç/kaydır) ve ok tuşlarını (bileşenlerin içinde) kullanarak gezinin. Şu görevleri tamamlayın:
- Bir ürün kategorisine göz atın
- Bir ürün seçin
- Bir beden/renk çeşidi seçin
- Sepete ekle
- Sepete git
- Ödeme işlemine devam edin
Her görev yalnızca klavyeyle tamamlanabilir olmalıdır.
Adım 2 — Ekran okuyucu testi: NVDA (ücretsiz, Windows) veya VoiceOver (yerleşik, Mac/iOS) kullanın. Ekran okuyucu etkinken ana sayfanızda, bir ürün sayfasında ve sepetinizde gezinin. Şunu dinle:
- Her resim anlamlı bir şekilde tanımlanıyor mu?
- Tüm düğmeler eylemleriyle etiketlenmiş mi?
- Okuma sırası mantıklı mı?
- Hata mesajları duyuruluyor mu?
Adım 3 – Yakınlaştırma testi: Tarayıcı yakınlaştırmasını %200 ve %400'e artırın. Sayfa yeniden akıtılmalı ve kullanılabilir durumda kalmalıdır; %200'de yatay kaydırma yok, içerik çakışması yok, metin kesilmiş değil.
Adım 4 — Renk kontrastı testi: Tüm metnin kontrast gereksinimlerini karşıladığını doğrulamak için axe DevTools veya WebAIM Kontrast Denetleyicisini kullanın: normal metin için 4,5:1, büyük metin için 3:1 (18pt+ veya 14pt+ kalın), kullanıcı arayüzü bileşenleri (düğmeler, simgeler, form kenarlıkları) için 3:1.
Görsel Erişilebilirliği: Ürün Görselleri için Alternatif Metin
Alternatif metin, Shopify mağazalarında en yaygın erişilebilirlik ihlalidir. Her görselde, gören kullanıcının görseli izlerken alacağı bilgilerin aynısını aktaran bir alternatif metin bulunmalıdır.
Shopify ürün görselleri için alternatif metin yönergeleri:
Satın alma kararları için nelerin önemli olduğunu açıklayın:
- Ürün adı ve temel ayırt edici özellikler
- Renk, malzeme ve dikkate değer görsel özellikler
- Kullanımda gösteriliyorsa bağlam (ör. "Ahşap masa üzerinde mavi seramik kupa")
- Resimde görünen herhangi bir metin
Yapılmaması gerekenler:
- "image001.jpg" — dosya adları alternatif metin değildir
- "Ürün görseli" — genel açıklamalar hiçbir bilgi taşımaz
- Anahtar kelime doldurma — "mavi kupa mavi seramik kahve kupası en iyi mavi kupa" — bu zararlıdır
- Her küçük ayrıntıyı açıklamak — kısa ve öz ve konuyla alakalı olun
Shopify'da alternatif metin uygulaması:
Shopify Yöneticisi aracılığıyla ürün görsellerine alternatif metin ekleyin:
- Yönetici > Ürünler > [Ürün] > bir görsele tıklayın
- "Resim alternatif metni" alanına alternatif metni girin
- Kaydet
Toplu alternatif metin güncellemeleri için Shopify toplu düzenleyicisini kullanın:
- Yönetici > Ürünler > Tüm ürünleri seç > Ürünleri düzenle
- "Ürün görseli alternatif metni" sütununu ekleyin
- Düzenleyin ve kaydedin
Dekoratif görseller:
Saf dekoratif görsellerde (arka plan desenleri, dekoratif bölücüler) boş alternatif metin (alt="") bulunmalıdır. Bu, ekran okuyucularına açıklama olmadan "resim"i duyurmak yerine resmi tamamen atlamalarını söyler.
Klavyeyle Gezinme: Mağazanızı Tamamen Çalıştırılabilir Hale Getirme
Klavye erişilebilirliği, her etkileşimli öğeye (düğmeler, bağlantılar, form alanları, açılır menüler, modlar) yalnızca bir klavye kullanılarak erişilebilmesini, etkinleştirilebilmesini ve gezinilebilmesini gerektirir.
Shopify temalarında odak yönetimi:
Çoğu Shopify teması, görsel estetik için odak göstergelerini bastırır:
/* Many themes include this — it's an accessibility violation */
:focus {
outline: none;
}
Tasarımı bozmayan görünür bir odaklama stiliyle değiştirin:
/* Visible focus for keyboard users, hidden for mouse users */
:focus-visible {
outline: 3px solid #005FCC;
outline-offset: 2px;
border-radius: 2px;
}
/* Still suppress for mouse clicks (no :focus-visible means mouse/touch) */
:focus:not(:focus-visible) {
outline: none;
}
Gezinme menüsü klavye erişimi:
Açılır gezinme menüleri klavyeyle çalıştırılabilir olmalıdır:
- Gezinme öğesine sekme
- Açılır menüyü açmak için Enter veya Space
- Açılır öğelerde gezinmek için ok tuşları
- Açılır menüyü kapatmak için kaçış
Bunu mevcut temanızda test edin. Birçok Shopify temasında, klavye kullanıcılarının erişemeyeceği, fareyle üzerine gelindiğinde tetiklenen açılır menüler bulunur. Düzeltme: Fareyle üzerine gelmenin yanı sıra Enter/Boşluk/ok tuşları için keydown olaylarında açılır menülerin açıldığından emin olun.
Kip ve çekmece klavye yönetimi:
Bir kalıcı veya sepet çekmecesi açıldığında klavye odağının modal'a taşınması gerekir. Kapandığında odak, onu tetikleyen öğeye dönmelidir. Modun içindeki tüm odaklanılabilir öğelere erişilebilir olmalıdır; odak, modaldan kaçmamalıdır.
// Example: Focus management for cart drawer
function openCartDrawer() {
const cartDrawer = document.getElementById('cart-drawer');
cartDrawer.setAttribute('aria-hidden', 'false');
cartDrawer.removeAttribute('inert');
// Move focus to first focusable element in drawer
const firstFocusable = cartDrawer.querySelector(
'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
);
firstFocusable?.focus();
// Trap focus within drawer
cartDrawer.addEventListener('keydown', trapFocus);
}
function closeCartDrawer(triggerElement) {
const cartDrawer = document.getElementById('cart-drawer');
cartDrawer.setAttribute('aria-hidden', 'true');
cartDrawer.setAttribute('inert', '');
cartDrawer.removeEventListener('keydown', trapFocus);
// Return focus to trigger element
triggerElement?.focus();
}
Form Erişilebilirliği: Etiketler, Hatalar ve Talimatlar
Formlar, e-ticarette en önemli erişilebilirlik alanıdır; sepete ekleme formu, arama girişi, bülten kaydı ve ödeme formlarının tümü tamamen erişilebilir olmalıdır.
Form etiketi gereksinimleri:
Her form girişinin programlı olarak ilişkilendirilmiş bir etiketi olmalıdır:
<!-- Correct: label explicitly associated via 'for' attribute -->
<label for="email">Email address</label>
<input type="email" id="email" name="email" required>
<!-- Correct: label wraps input (implicit association) -->
<label>
Email address
<input type="email" name="email" required>
</label>
<!-- Wrong: placeholder is not a substitute for label -->
<input type="email" placeholder="Email address" name="email">
Kullanıcılar yazarken yer tutucu metin kayboluyor ve çoğu tarayıcıda kontrast yetersiz. Hiçbir zaman yer tutucuyu tek etiket olarak kullanmayın.
Hata mesajı erişilebilirliği:
Hata mesajları, onlara neden olan alanla programlı olarak ilişkilendirilmelidir:
<div>
<label for="zip">ZIP code</label>
<input
type="text"
id="zip"
name="zip"
aria-describedby="zip-error"
aria-invalid="true"
>
<p id="zip-error" role="alert">
Please enter a valid 5-digit ZIP code
</p>
</div>
role="alert", ekran okuyucuların hata mesajını göründüğü anda hemen duyurmasına neden olur. aria-describedby hatayı giriş alanına bağlar, böylece ekran okuyucular alanda gezinirken hatayı bulabilir.
Boyut ve renk çeşidi seçicileri:
Ürün çeşidi seçicileri (beden düğmeleri, renk örnekleri) erişilebilir olmalıdır. Ortak yaklaşımlar:
<!-- Accessible radio button group for size selection -->
<fieldset>
<legend>Size</legend>
<div class="size-options">
<input type="radio" id="size-s" name="size" value="S">
<label for="size-s">Small</label>
<input type="radio" id="size-m" name="size" value="M">
<label for="size-m">Medium</label>
<input type="radio" id="size-l" name="size" value="L">
<label for="size-l">Large</label>
</div>
</fieldset>
Renk örneklerinin erişilebilir adlara ihtiyacı vardır; görsel renk yeterli değildir:
<!-- Accessible color swatch -->
<input type="radio" id="color-navy" name="color" value="Navy">
<label for="color-navy">
<span class="swatch navy" aria-hidden="true"></span>
<span class="visually-hidden">Navy</span>
</label>
ARIA Etiketleri ve Anlamsal HTML
ARIA (Erişilebilir Zengin İnternet Uygulamaları) özellikleri, HTML'nin tek başına yetersiz olduğu anlamsal boşlukları doldurur. Ancak ARIA'nın ilk kuralı şudur: "HTML yapabiliyorsa ARIA'yı kullanmayın."
Shopify mağazaları için ortak ARIA modelleri:
<!-- Cart button with item count -->
<button aria-label="Cart, 3 items">
<svg aria-hidden="true"><!-- cart icon --></svg>
<span class="visually-hidden">Cart</span>
<span class="cart-count" aria-hidden="true">3</span>
</button>
<!-- "Add to Cart" button state changes -->
<button id="add-to-cart" aria-live="polite">
Add to Cart
</button>
<!-- After adding: -->
<button id="add-to-cart" aria-live="polite">
Added to Cart ✓
</button>
<!-- Loading states -->
<div aria-busy="true" aria-live="polite">
Loading products...
</div>
<!-- Expandable sections (accordion) -->
<button aria-expanded="false" aria-controls="faq-answer-1">
What is your return policy?
</button>
<div id="faq-answer-1" hidden>
<p>We accept returns within 30 days...</p>
</div>
Gezinme için önemli nokta rolleri:
Temanızın, ekran okuyucu kullanıcılarının gezindiği uygun önemli HTML öğelerini kullandığından emin olun:
<header role="banner"><!-- site header --></header>
<nav aria-label="Main navigation"><!-- primary navigation --></nav>
<main id="main-content"><!-- main content --></main>
<aside><!-- sidebar filters or complementary content --></aside>
<footer role="contentinfo"><!-- site footer --></footer>
Erişilebilirlik Kaplamaları: Neden Başarısız Olurlar
Erişilebilirlik katmanları (accessiBe, UserWay, AudioEye), sitenizi otomatik olarak erişilebilir kıldığını iddia eden JavaScript widget'larıdır. Bunlar çözüm değildir ve hukuki riski artırır.
Katmanlar neden başarısız oluyor:
- Yapısal HTML erişilebilirlik sorunlarını çözemezler; yalnızca yüzey düzeyinde sunum
- Sıklıkla yardımcı teknolojilerle çatışırlar ve gerçek ekran okuyucu kullanıcıları için deneyimi daha da kötüleştirirler
- Mahkemeler yer paylaşımı sağlayıcılarının iddialarını yeterli ADA uyumluluğu olarak kabul etmedi
- Ulusal Körler Federasyonu ve diğer engelli savunuculuk kuruluşları kaplamalara açıkça karşı çıkıyor
- Birçok yer paylaşımlı sağlayıcı toplu davalarla karşı karşıya kaldı
Bunun yerine ne yapılmalı:
Yapısal erişilebilirlik düzeltmelerine yatırım yapın: anlamsal HTML, uygun etiketler, klavyede gezinme, odak yönetimi ve renk kontrastı. Bu düzeltmeler tüm kullanıcılara fayda sağlar, SEO'yu geliştirir (ekran okuyucular ve arama tarayıcılarının benzer ihtiyaçları vardır) ve gerçek yasal koruma sağlar.
Sıkça Sorulan Sorular
Bir Shopify mağazasına ADA uyumsuzluğu nedeniyle gerçekten dava açılabilir mi?
Evet. ADA Başlık III e-ticaret web sitelerine karşı açılan erişilebilirlik davaları ABD yasalarında köklü bir yere sahiptir. 9. ve 11. Dairelerdeki mahkemeler sürekli olarak web sitelerinin ADA gerekliliklerine tabi "kamuya açık konaklama yerleri" olduğuna karar vermiştir. ABD'deki müşterileri olan Shopify satıcıları bu yasal düzenlemeye tabidir. Talep mektubu yanıtının ve ödemenin maliyeti genellikle 5.000 ila 25.000 ABD Doları arasında değişir; tam dava maliyeti çok daha fazladır. Proaktif erişilebilirlik uygulaması önemli ölçüde daha ekonomiktir.
Shopify'ın ödeme işleminde erişilebilirlik çalışması gerekiyor mu?
Shopify'ın yerel ödeme (checkout.shopify.com adresinde barındırılan ödeme) Shopify tarafından yönetilir ve korunur ve WCAG 2.1 AA standartlarını karşılar. Shopify'ın standart ödeme seçeneğini kullanıyorsanız mağazanızın bu kısmı Shopify'ın erişilebilirlik sorumluluğundadır. Ancak temanızın sepet çekmecesi, sepete ekleme formları, hesap sayfaları ve temayla oluşturulan tüm içerik sizin sorumluluğunuzdadır. Özel bir ödeme veya başsız mağaza vitrini kullanıyorsanız tüm ödeme işlemlerine erişim sizin sorumluluğunuzdadır.
Bir Shopify mağazasını tamamen erişilebilir hale getirmek ne kadar sürer?
Ticari temalı tipik bir Shopify mağazası için WCAG 2.1 AA uyumluluğunun ele alınması, temanın temel kalitesine ve özelleştirme kapsamına bağlı olarak 40-80 geliştirme saati sürer. İlk denetim: 8-12 saat. Kritik düzeltmeler (klavyede gezinme, odak göstergeleri, alternatif metin sistemi): 20-30 saat. Form ve modal erişilebilirlik: 10-20 saat. Devam eden bakım: Yeni içerik ve özellikler eklendikçe ayda 4-8 saat.
Her ürün görselinin alternatif metin içermesini manuel olarak yapmam gerekir mi?
En yaygın ihlal (eksik alternatif metin) için her görsele manuel olarak alternatif metin yazmak yerine bir sistem kurabilirsiniz. Ürün görselleri için: ürün başlığını + anahtar varyant ayrıntılarını şablon olarak kullanın. Toplu güncellemeler için: Alternatif metni toplu olarak güncellemek üzere Shopify'ın ürün meta alanlarına yönelik CSV içe/dışa aktarma özelliğini kullanın. Yeni ürünler için: Ürün oluşturma kontrol listenizin bir parçası olarak alternatif metni zorunlu tutun. Binlerce ürün içeren koleksiyonlar için öncelikle trafiği en yüksek sayfalarınıza öncelik verin.
Erişilebilirlik için kullanılan "görsel olarak gizli" CSS sınıfı nedir?
Görsel olarak gizlenen sınıf ("yalnızca sr" olarak da bilinir), içeriği görsel olarak gizlerken ekran okuyucuların da erişebilmesini sağlar. Bu, display:none (ekran okuyucular dahil herkesten gizlenen) ve visibility:hidden (aynı)'dan farklıdır. Yalnızca simge düğmeleri gibi görsel öğelere erişilebilir etiketler eklemek önemlidir:
.visually-hidden {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
Sonraki Adımlar
Klavyeyle gezinme, ekran okuyucu uyumluluğu, form erişilebilirliği ve WCAG renk kontrastını kapsayan kapsamlı Shopify erişilebilirlik uygulaması, hem ön uç geliştirme uzmanlığını hem de erişilebilirlik testi metodolojisini gerektirir.
ECOSIRE'ın Shopify hizmetleri erişilebilir müşteri tabanınızı genişletirken mağazanızı ADA davalarından korumak için erişilebilirlik denetimlerini, WCAG 2.1 AA iyileştirmesini ve sürekli erişilebilirlik izlemeyi içerir.
Shopify mağazanız için kapsamlı bir WCAG 2.1 AA denetimi planlamak için erişilebilirlik ekibimizle iletişime geçin.
Yazan
ECOSIRE Research and Development Team
ECOSIRE'da kurumsal düzeyde dijital ürünler geliştiriyor. Odoo entegrasyonları, e-ticaret otomasyonu ve yapay zeka destekli iş çözümleri hakkında içgörüler paylaşıyor.
İlgili Makaleler
Case Study: eCommerce Migration to Shopify with Odoo Backend
How a fashion retailer migrated from WooCommerce to Shopify and connected it to Odoo ERP, cutting order fulfillment time by 71% and growing revenue 43%.
Global eCommerce Accessibility Laws: EAA, ADA, and AODA
Complete guide to global eCommerce accessibility laws including EU EAA, US ADA, Canada AODA, WCAG standards, technical requirements, and compliance implementation steps.
Integrating GoHighLevel CRM with eCommerce Stores
Step-by-step guide to integrating GoHighLevel CRM with Shopify and WooCommerce. Sync orders, automate post-purchase flows, and recover abandoned carts at scale.