2013-10-05 12 views
5

我正在評估一個網站,我一直在努力磨練我的無障礙技能。我想知道標籤內容的最大語義標記是什麼。這是我現在有:語義標記和WAI-ARIA爲選項卡部分?

<section> 
    <nav> 
    <a href="#tab" aria-controls="content">Stuff</a> 
    <a href="#tab" aria-controls="content">Stuff</a> 
    <a href="#tab" aria-controls="content">Stuff</a> 
    </nav> 
    <section id="content" aria-live="polite" role="region"> 
    <article>...</article> 
    <article>...</article> 
    <article>...</article> 
    </section>  
</section> 

我對此有幾個具體問題。

  1. 我在正確的軌道上嗎?如果沒有人可以推薦一些改變?
  2. 如果我要通過AJAX加載文章,是否需要進行更改?
  3. 我需要導航標籤嗎?
  4. WAI-ARIA在這裏的角色是否夠用?
  5. 這些WAI-ARIA角色是否正確使用?
+0

關於「大多數語義標記」的問題主要是基於意見的,並傾向於產生討論和辯論而不是確切的答案。如果您要求最方便的標記,這將更具建設性,尤其是如果您解釋了您主要想到的哪種殘疾。但是你也應該解釋一下「標籤部分」和「標籤內容」(特別是從技術實現的角度來看,即標籤應該如何工作)。 –

回答

5

1.我在正確的軌道上?如果沒有人可以推薦一些改變?

是的,你絕對是以一種好的方式開始的。如果您想改進它,某些選項卡的東西可能會被賦予一些與選項卡相關的角色,但它的功能仍是如此。

2.如果要通過AJAX加載文章,我需要進行更改嗎?

不,應該沒問題。事實上,它是一個現場區域應該(僅用於NVDA測試)意味着新內容被宣佈。這是你之後的行爲嗎?

3.我需要導航標籤嗎?

不,但我認爲這有助於使文件清楚地表明文檔的用途。但請注意,如果您按照以下所做的操作將其標記爲Tablist,則導航元素不會再公佈。

4. WAI-ARIA的角色在這裏足夠嗎?

如果通過ARIA角色你還包括狀態和屬性,那麼基本上你應該被加載動態內容(如果這就是你以後的內容)。沒有任何情況可以移動用戶的鍵盤焦點或任何事物。國際海事組織,如果用戶點擊的內容和你給他們的內容之間有很多導航的話,你只會真的想這麼做。

5.是否使用這些正確的WAI-ARIA角色?

你不遠處。如果你真的想要一個標籤式的體驗,那麼你需要tablist,tab和tabpanel角色。我會舉一個例子。

我已經採取了你的代碼,並做了一個人爲的但工作的例子來測試它。它不會在AJAX中加載任何內容,只是顯示和隱藏內容。在我給出這個答案之前,我想確定一下,但是我會把代碼放在這裏以防萬一。

<html> 
    <head> 
     <title>Aria test</title> 
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
     <script type="text/javascript"> 
      $(document).ready(function() { 
       $('nav a').on('click', function() { 
        hideArticles(); 
        deslectAllTabs(); 
        $(this).attr('aria-selected', true); 
        var tab = '#' + $(this).attr('aria-controls'); 
        $(tab).show(); 
       }); 
      }); 

      function hideArticles() { 
       $('article').hide(); 
      } 
      function deslectAllTabs() { 
       $('nav a').attr('aria-selected', false); 
      } 
     </script> 
     <style type="text/css"> 
      article { display: none; } 
     </style> 
    </head> 
    <body> 
    <section> 
     <nav role="tablist"> 
      <a href="#tab" aria-controls="content1" id="tab1" role="tab">Stuff1</a> 
      <a href="#tab" aria-controls="content2" id="tab2" role="tab">Stuff2</a> 
      <a href="#tab" aria-controls="content3" id="tab3" role="tab">Stuff3</a> 
     </nav> 
     <section id="content" aria-live="polite" role="region"> 
      <article id="content1" role="tabpanel">The lazy dog jumped over the quick fox</article> 
      <article id="content2" role="tabpanel">If you click this tab then your life will be better</article> 
      <article id="content3" role="tabpanel">Know your roles</article> 
     </section>  
    </section> 
    </body> 
</html> 

我希望這會有所幫助。

+0

Doctype在哪裏? –

+0

如果您認爲這對答案很重要,請隨時添加。 –

1

語義在這個級別上往往會變得模糊,但是我認爲只要每個選項卡真的會算作一個單獨的文章,那麼您就處於正確的軌道上。

article元素表示由文檔,頁面,應用程序或站點中的自含式組合構成並且旨在獨立分佈或可重用的頁面組件。在聯合。這可以是論壇帖子,雜誌或報紙文章,博客文章,用戶提交的評論,交互式小部件或小工具或任何其他獨立內容項目。

Source

我不認爲<nav>這裏放錯了地方,雖然它取決於不同的標籤是多麼的重要問候整個網站的:

資產淨值元素表示鏈接到其他頁面或頁面內部分的頁面部分:包含導航鏈接的部分。 並非網頁上的所有鏈接組都必須位於導航元素中,只有由主要導航塊組成的部分才適合導航元素。特別是,頁腳通常有一個鏈接到一個網站的各個關鍵部分的列表,但在這種情況下頁腳元素更合適,並且這些鏈接不需要導航元素。

Source

我不會用section s到雖然包裹的東西在裏面。

section元素不是一個通用的容器元素。當僅僅爲了樣式或爲了方便腳本而需要元素時,鼓勵作者改爲使用div元素。一般規則是,只有元素的內容將在文檔的大綱中明確列出時,section元素纔是合適的。

Source

拳頭爲<section>元件的另一個規則是,他們應該有一個標題。如果沒有,它可能不是真正的「部分」,而只是你需要包裝的一組元素,所以只需使用<div>即可。

+0

太棒了,這真的很有幫助。我想這是模糊的。我也懷疑wai-aria的角色。我會更新我的帖子以反映這一點,謝謝。 – Jeffpowrs

+0

我對詠歎不甚瞭解,恐怕無法幫到你。 –