HTML'deki “rol” özelliğinin amacı nedir?


1165

Bazı insanların çalışmalarında rol niteliklerini görmeye devam ediyorum. Ben de kullanıyorum ama etkisi konusunda emin değilim.

Örneğin:

<header id="header" role="banner">
    Header stuff in here
</header>

Veya:

<section id="facebook" role="contentinfo">
    Facebook stuff in here
</section>

Veya:

<section id="main" role="main">
     Main content stuff in here
</section>

Bu rol özelliği gerekli mi?

Bu özellik anlambilim için daha mı iyidir?

SEO'yu geliştiriyor mu?

Rollerin bir listesini burada bulabilirsiniz , ancak bazı insanların kendi rollerini oluşturduğunu görüyorum. Buna izin verilir mi veya rol özelliğinin doğru kullanımı var mı?

Bunun hakkında bir fikrin var mı?

Yanıtlar:


1005

Gördüğünüz rollerin çoğu ARIA 1.0'ın bir parçası olarak tanımlandı ve daha sonra HTML5'e dahil edildi. Yeni HTML5 öğelerinden bazıları (iletişim kutusu, ana vb.) Orijinal ARIA rollerine dayanır.

http://www.w3.org/TR/wai-aria/

Yerel semantik öğenize ek olarak rolleri kullanmanın iki ana nedeni vardır.

Sebep # 1. Ana bilgisayar dili öğesinin uygun olmadığı veya çeşitli nedenlerle daha az anlamsal olarak uygun bir öğenin kullanıldığı rolü geçersiz kılma.

Bu örnekte, sonuçta ortaya çıkan işlevsellik bir gezinme bağlantısından daha düğme benzeri olsa da bir bağlantı kullanılmıştır.

<a href="#" role="button" aria-label="Delete item 1">Delete</a>

Ekran okuyucular bunu bir düğme olarak duyar (bir bağlantının aksine) ve sınıf-itis ve div-itis'lerden kaçınmak için bir CSS özellik seçici kullanabilirsiniz.

*[role="button"] {
  /* style these a buttons w/o relying on a .button class */
}

Sebep # 2. ARIA rolünü uygulayan ancak yerel öğenin rolünü henüz uygulamayan tarayıcıları desteklemek için yerel bir öğenin rolünü yedekleme.

Örneğin, "ana" rol tarayıcılarda yıllardır desteklenmektedir, ancak HTML5'e nispeten yeni bir eklentidir, bu nedenle birçok tarayıcı semantiği henüz desteklememektedir <main>.

<main role="main"></main>

Bu teknik olarak gereksizdir, ancak bazı kullanıcılara yardımcı olur ve herhangi birine zarar vermez. Birkaç yıl içinde, bu teknik muhtemelen gereksiz hale gelecektir.

Ayrıca şunu da yazdınız:

Bazı insanların kendilerinin uydurduklarını görüyorum. Buna izin verilir mi veya rol özelliğinin doğru kullanımı var mı?

Gerçek bir rol dahil edilmedikçe, bu özelliğin geçerli bir kullanımıdır. Tarayıcılar, belirteç listesinde ilk tanınan rolü uygular.

<span role="foo link note bar">...</a>

Listenin dışında, sadece linkve notegeçerli rolleri vardır ve önce gelir, çünkü bağlantı rolü böylece uygulanacaktır. Özel roller kullanıyorsanız, bunların ARIA'da veya kullandığınız ana bilgisayar dilinde (HTML, SVG, MathML, vb.) Tanımlanmış herhangi bir rolle çakışmadıklarından emin olun.


19
Bu bağlantı da yardımcı olabilir. HTML'de ARIA kullanma. rawgithub.com/w3c/aria-in-html/master/index.html
James Craig

6
Neden evrensel seçiciyi [role = "düğmesi"] önüne koydunuz?
Evgeny

5
@EugeneXa benim tahminim [role="button"]yapmak zorunda olacak irade kurtarmak ile herhangi bir öğeyi tam olarak belirlemeka[role="button"], span[role="button"]
13:42

4
"Birkaç yıl içinde, bu teknik muhtemelen gereksiz hale gelecektir". Erişilebilirlik hakkında bir şey belirtin, ancak açısal ve web bileşenleri gibi özel etiketler oluşturan şeylerle bunun bir zorunluluk haline geldiğini hayal edebiliyorum.
xdhmoore

8
@xdhmoore Bence rolegenel olarak değil, etiketle aynı değere bir rol koymak için gereksiz teknik anlamına geliyordu .
willlma

159

Anladığım kadarıyla, roller başlangıçta XHTML tarafından tanımlandı, ancak kullanımdan kaldırıldı. Ancak, şimdi HTML 5 tarafından tanımlanmıştır, buraya bakın: https://www.w3.org/WAI/PF/aria/roles#abstract_roles_header

Rol özelliğinin amacı, bir web uygulamasının parçası olarak yazılıma bir öğenin (ve alt öğelerinin) tam işlevini ayrıştırmaktır. Bu çoğunlukla ekran okuyucular için bir erişilebilirlik olayıdır, ancak gömülü tarayıcılar ve ekran sıyırıcılar için de yararlı olduğunu görebiliyorum. Alışılmadık HTML istemcisi için yararlı olması için, özelliğin bağladığım spesifikasyondaki rollerden birine ayarlanması gerekir. Kendinizinkini yaparsanız, bu 'gelecek' işlevselliği işe yaramaz - bir yorum daha iyi olurdu.

Buradaki pratikler: http://www.accessibleculture.org/articles/2011/04/html5-aria-2011/


20

Bu rol özelliği gerekli mi?

Cevap: Evet .

  • Rol özniteliği, diller kendi rol özniteliklerini tanımlamadığında XML tabanlı dillerde rolleri tanımlamak için Erişilebilir Zengin İnternet Uygulamalarını ( WAI-ARIA ) desteklemek için gereklidir .
  • Rol özelliğinin Protokoller ve Biçimler Çalışma Grubu tarafından yayımlanmasının nedeni bu olsa da , özelliğin daha genel kullanım durumları da vardır.

Size şunları sağlar:

  • Ulaşılabilirlik
  • Cihaz uyarlaması
  • Sunucu tarafı işleme
  • Karmaşık veri açıklaması, ... vb.

3
Erişilebilirlik, Cihaz Uyarlaması ve Karmaşık veri açıklaması anlamlarını lütfen açıklar mısınız? Web programlamada yeniyim, bu yüzden bu terimler benim için biraz yeni. Teşekkürler!
Manish Jain

11

Bunun eski bir soru olduğunu anlıyorum, ancak kesin gereksinimlerinize bağlı olarak bir başka olası husus, https://validator.w3.org/ adresinde doğrulamanın aşağıdaki gibi uyarılar oluşturmasıdır:

Uyarı: Form rolü, öğe formu için gerekli değildir.


1
Belki de downvoter yorum yapmak istiyor? OP'nin "Bu rol özelliği gerekli mi?"
dotnetnutty

0

Rol niteliği temel olarak ekran okuyucu kullanan kişiler için erişilebilirliği artırır. Erişilebilirlik, cihaz uyarlaması, sunucu tarafı işleme ve karmaşık veri açıklaması gibi birçok durumda kullanıyoruz. Daha fazla bilgi için tıklayın: https://www.w3.org/WAI/PF/HTML/wiki/RoleAttribute .


2
Lütfen herhangi bir bağlantıyı açıklayın ve siteyi yayınlama yoluyla sitenizi tanıtmanın bir yolu olarak kullanmayın. Bkz. İyi bir cevabı nasıl yazarım? .
Yvette
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.