Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi

ARIA rolü ne zaman gereklidir?​


ARIA rolü, bir HTML öğesinin anlamını yardımcı teknolojilere bildirmek için kullanılır. Ancak çoğu durumda gerekli değildir: Önce amacınıza uygun yerleşik HTML öğesini kullanın. Örneğin düğme için <button>, bağlantı için <a href="...">, başlık için <h1> veya <h2> seçilmelidir. Bu öğeler anlamın yanında klavye davranışı, odaklanma ve tarayıcı erişilebilirliği gibi temel özellikleri de sağlar.

ARIA rolü, yerleşik HTML semantiğinin ihtiyacı karşılamadığı durumlarda gereklidir. En yaygın örnek, özel bir arayüz bileşeninin oluşturulmasıdır. Örneğin tasarım gereği bir <div> öğesi düğme gibi çalıştırılıyorsa role="button" rolü, öğenin yardımcı teknolojilere düğme olarak duyurulmasını sağlar. Fakat rol tek başına öğeyi düğmeye dönüştürmez; klavye ile çalıştırma, odaklanma ve durum değişiklikleri ayrıca uygulanmalıdır.

Önce yerleşik HTML'yi seçin​


Aynı işlevi sağlayan yerleşik bir öğe varsa ARIA eklemeyin. Gereksiz veya yanlış ARIA, tarayıcının doğal anlamını değiştirebilir ve ekran okuyucu kullanıcılarını yanıltabilir.

  1. İşlevi belirleyin: bağlantı mı, düğme mi, form alanı mı, başlık mı, açılır menü mü?
  2. Bu işleve karşılık gelen yerleşik HTML öğesini seçin.
  3. Yerleşik öğe görünüm veya davranış bakımından yeterli değilse CSS ile görünümü değiştirin; yalnızca görünüm için ARIA kullanmayın.
  4. Gerçekten özel bir bileşen gerekiyorsa uygun rolü ve gerekli durum özelliklerini belirleyin.
  5. Klavye odağını, klavye işlemlerini, görünür durumu ve ekran okuyucu duyurusunu birlikte test edin.

Örneğin tıklanınca başka bir sayfaya gidilecekse <div role="button"> yerine bağlantı kullanın. Bir işlem başlatılacaksa <span role="button"> yerine düğme kullanın. Bu seçim, yalnızca ekran okuyucunun duyurusunu değil, klavye ve tarayıcı davranışını da doğru hale getirir.

ARIA'nın gerekli olabileceği durumlar​


Aşağıdaki karar özeti, rol ekleme ihtiyacını ayırmaya yardımcı olur:

DurumTercihARIA gereksinimi
Sayfa içi veya dışı gezinme<a href>Genellikle gerekmez
Bir işlem başlatma<button>Genellikle gerekmez
Özel açılır pencere veya sekme bileşeniYerleşik karşılığı olmayan kontrollü bileşenUygun rol, durum ve klavye davranışı gerekebilir
Sayfanın ana, gezinme veya tamamlayıcı bölümüAnlamlı HTML bölümleriÇoğunlukla HTML semantiği yeterlidir

Tablodaki “gerekebilir” ifadesi, rol adını eklemenin yeterli olduğu anlamına gelmez. Örneğin özel bir sekme bileşeninde sekmelerin rolleriyle birlikte seçili sekmenin durumu, ilgili panelle ilişki ve klavye geçişleri de doğru kurulmalıdır. Bileşen bu ayrıntıları gerektirdiği için mümkünse erişilebilirliği yerleşik HTML ile daha kolay korunan bir çözüm tercih edilir.

Somut örnek: özel düğme​


Aşağıdaki örnek, ARIA rolünün tek başına neden yeterli olmadığını gösterir. Bu, yerleşik <button> kullanılamayan özel bir bileşen varsayımıdır:

Kod:
<style>
  #action { display: inline-block; padding: 8px; border: 1px solid; border-radius: 4px; }
  #action:focus-visible { outline: 2px solid; outline-offset: 2px; }
  #action[aria-pressed="true"] { font-weight: bold; }
</style>
<div id="action" role="button" tabindex="0" aria-pressed="false">Seçim</div>

<script>
  const action = document.querySelector('#action');

  function toggle() {
    const pressed = action.getAttribute('aria-pressed') === 'true';
    action.setAttribute('aria-pressed', String(!pressed));
  }

  action.addEventListener('click', toggle);
  action.addEventListener('keydown', (event) => {
    if (!event.repeat && (event.key === 'Enter' || event.key === ' ')) {
      event.preventDefault();
      toggle();
    }
  });
</script>

Beklenen sonuç, fareyle tıklama veya odak öğedeyken Enter ya da Boşluk tuşuna basma sonucunda aria-pressed değerinin değişmesi ve seçili görünümün güncellenmesidir. Toggle düğmenin erişilebilir adı sabit kalır; durum adın değiştirilmesiyle değil aria-pressed ile bildirilir. Ekran okuyucu rolü ve basılı durum bilgisini alabilir. Klavye ile çalışmıyorsa yalnız rol eklenmiş, bileşenin davranışı tamamlanmamış demektir. Gerçek projede bu örneğin ilk tercihi yine <button type="button"> kullanmaktır; özel <div> yaklaşımı, yerleşik öğenin gerçekten kullanılamadığı bileşenlerle sınırlı tutulmalıdır.

Sık yapılan hatalar​


  1. Her <div> öğesine rol eklemek: Bu, öğeye otomatik olarak işlev veya klavye desteği kazandırmaz.
  2. Yerleşik öğeye gereksiz eşdeğer rol eklemek: Doğal HTML semantiğini tekrar etmek bakım yükünü artırabilir.
  3. Görsel simgeyi rol sanmak: İkonun görünmesi, işlemin adını ve durumunu açıklamaz; erişilebilir ad ayrıca düşünülmelidir.
  4. Durum rolünü güncellememek: Açık-kapalı veya seçili-seçili değil gibi bilgiler değiştiğinde ilgili ARIA durumu da güncellenmelidir.
  5. Yalnız fareyle test etmek: Rol verilen özel bileşen, klavye odağı ve klavye işlemleriyle de denenmelidir.

Kısa kural şudur: Önce doğru HTML öğesini kullanın; yalnızca gerçek bir semantik boşluk veya özel bileşen varsa ARIA ekleyin. Rol eklediğinizde bununla birlikte gerekli durumları, erişilebilir adı, odağı ve klavye davranışını da tamamlayın.

Sık sorulan sorular​


ARIA, SEO için zorunlu mudur?​


Hayır. ARIA'nın amacı arama sıralamasını yükseltmek değil, arayüzün anlamını ve durumunu yardımcı teknolojilere aktarmaktır. SEO gerekçesiyle rastgele rol eklemek doğru bir yaklaşım değildir.

CSS ile gizlenen bir öğeye ARIA rolü eklemek yeterli olur mu?​


Hayır. Görsel olarak gizli veya erişilebilirlik ağacından çıkarılmış bir öğenin rolü kullanıcıya anlamlı biçimde ulaşmayabilir. Görünürlük, erişilebilirlik ağacındaki durum ve etkileşim davranışı birlikte değerlendirilmelidir.

Bir öğeye birden fazla ARIA rolü yazabilir miyim?​


Role özniteliği boşlukla ayrılmış bir yedek rol listesi kabul edebilir; tarayıcı desteklediği ilk rolü kullanır. Bu, öğeye aynı anda birkaç bağımsız rol kazandırmaz. Çoğu bileşende tek ve doğru rol seçmek yeterlidir. Birden fazla davranışı tek öğede birleştirmek yerine bileşeni uygun HTML yapısına ayırmak daha anlaşılır ve güvenilir olur.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.