2017-06-05 45 views
0

我正在创建一个应该符合WCAG 2.0的应用程序。 我使用AChecker来检查我的页面,并且我遇到了table的一些问题。我得到以下2个问题:如何使用headers属性使表A11Y兼容?

既行和列标题
  • 数据表不使用范围,以确定细胞
  • 与多行数据表/头的列不使用ID和标题属性,以确定细胞

这里是我的表的源代码:

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it"> 
    <body> 
     <table class="ui celled center aligned unstackable table seven column day"> 
      <thead> 
       <tr> 
        <th colspan="7"> 
         <span class="link">Giugno 2017</span> 
         <span class="prev link"> 
          <span class="ifix chevron left icon"></span> 
         </span> 
         <span class="next link"> 
          <span class="ifix chevron right icon"></span> 
         </span> 
        </th> 
       </tr> 
       <tr> 
        <th>Dom</th> 
        <th>Lun</th> 
        <th>Mar</th> 
        <th>Mer</th> 
        <th>Gio</th> 
        <th>Ven</th> 
        <th>Sab</th> 
       </tr> 
      </thead> 
      <tbody> 
       <tr> 
        <td class="link adjacent disabled">28</td> 
        <td class="link adjacent disabled">29</td> 
        <td class="link adjacent disabled">30</td> 
        <td class="link adjacent disabled">31</td> 
        <td class="link">1</td> 
        <td class="link">2</td> 
        <td class="link">3</td> 
       </tr> 
       <tr> 
        <td class="link">4</td> 
        <td class="link today focus">5</td> 
        <td class="link">6</td> 
        <td class="link">7</td> 
        <td class="link">8</td> 
        <td class="link">9</td> 
        <td class="link">10</td> 
       </tr> 
       <tr> 
        <td class="link">11</td> 
        <td class="link">12</td> 
        <td class="link">13</td> 
        <td class="link">14</td> 
        <td class="link">15</td> 
        <td class="link">16</td> 
        <td class="link">17</td> 
       </tr> 
       <tr> 
        <td class="link">18</td> 
        <td class="link">19</td> 
        <td class="link">20</td> 
        <td class="link">21</td> 
        <td class="link">22</td> 
        <td class="link">23</td> 
        <td class="link">24</td> 
       </tr> 
       <tr> 
        <td class="link">25</td> 
        <td class="link">26</td> 
        <td class="link">27</td> 
        <td class="link">28</td> 
        <td class="link">29</td> 
        <td class="link">30</td> 
        <td class="link adjacent disabled">1</td> 
       </tr> 
       <tr> 
        <td class="link adjacent disabled">2</td> 
        <td class="link adjacent disabled">3</td> 
        <td class="link adjacent disabled">4</td> 
        <td class="link adjacent disabled">5</td> 
        <td class="link adjacent disabled">6</td> 
        <td class="link adjacent disabled">7</td> 
        <td class="link adjacent disabled">8</td> 
       </tr> 
      </tbody> 
     </table> 
    </body> 
</html> 

链接到相关Plunker

根据此W3C documentation page你知道在我的情况下使用headers的正确方法吗?

我试图自己做,我编辑了我的代码。结果如下:

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it"> 
    <body> 
     <table class="ui celled center aligned unstackable table seven column day"> 
      <thead> 
       <tr> 
        <th id="month" scope="col" colspan="7"> 
         <span class="link">Giugno 2017</span> 
         <span class="prev link"> 
          <span class="ifix chevron left icon"></span> 
         </span> 
         <span class="next link"> 
          <span class="ifix chevron right icon"></span> 
         </span> 
        </th> 
       </tr> 
       <tr> 
        <th id="dom" headers="month" scope="col">Dom</th> 
        <th id="lun" headers="month" scope="col">Lun</th> 
        <th id="mar" headers="month" scope="col">Mar</th> 
        <th id="mer" headers="month" scope="col">Mer</th> 
        <th id="gio" headers="month" scope="col">Gio</th> 
        <th id="ven" headers="month" scope="col">Ven</th> 
        <th id="sab" headers="month" scope="col">Sab</th> 
       </tr> 
      </thead> 
      <tbody> 
       <tr> 
        <td headers="dom" class="link adjacent disabled">28</td> 
        <td headers="lun" class="link adjacent disabled">29</td> 
        <td headers="mar" class="link adjacent disabled">30</td> 
        <td headers="mer" class="link adjacent disabled">31</td> 
        <td headers="gio" class="link">1</td> 
        <td headers="ven" class="link">2</td> 
        <td headers="sab" class="link">3</td> 
       </tr> 
       <tr> 
        <td headers="dom" class="link">4</td> 
        <td headers="lun" class="link today focus">5</td> 
        <td headers="mar" class="link">6</td> 
        <td headers="mer" class="link">7</td> 
        <td headers="gio" class="link">8</td> 
        <td headers="ven" class="link">9</td> 
        <td headers="sab" class="link">10</td> 
       </tr> 
       <tr> 
        <td headers="dom" class="link">11</td> 
        <td headers="lun" class="link">12</td> 
        <td headers="mar" class="link">13</td> 
        <td headers="mer" class="link">14</td> 
        <td headers="gio" class="link">15</td> 
        <td headers="ven" class="link">16</td> 
        <td headers="sab" class="link">17</td> 
       </tr> 
       <tr> 
        <td headers="dom" class="link">18</td> 
        <td headers="lun" class="link">19</td> 
        <td headers="mar" class="link">20</td> 
        <td headers="mer" class="link">21</td> 
        <td headers="gio" class="link">22</td> 
        <td headers="ven" class="link">23</td> 
        <td headers="sab" class="link">24</td> 
       </tr> 
       <tr> 
        <td headers="dom" class="link">25</td> 
        <td headers="lun" class="link">26</td> 
        <td headers="mar" class="link">27</td> 
        <td headers="mer" class="link">28</td> 
        <td headers="gio" class="link">29</td> 
        <td headers="ven" class="link">30</td> 
        <td headers="sab" class="link adjacent disabled">1</td> 
       </tr> 
       <tr> 
        <td headers="dom" class="link adjacent disabled">2</td> 
        <td headers="lun" class="link adjacent disabled">3</td> 
        <td headers="mar" class="link adjacent disabled">4</td> 
        <td headers="mer" class="link adjacent disabled">5</td> 
        <td headers="gio" class="link adjacent disabled">6</td> 
        <td headers="ven" class="link adjacent disabled">7</td> 
        <td headers="sab" class="link adjacent disabled">8</td> 
       </tr> 
      </tbody> 
     </table> 
    </body> 
</html> 

链接到相关的Plunker

现在AChecker说在页面中有“没有已知的问题”。 无论如何,如果表中有多个th元素,您是否可以确认我的修改是使用idheaders的正确方法?

回答

2

你在第二张表中做什么在技术上是正确的。当您有colspan s和rowspan s,或者当您有多个<th> s时,则此方法使其可访问。某些资源(您可能已经阅读过):

虽然这种方法是冗长的。您可能希望使用<caption>来代替您的月/年,因此不会在每个单元格(对于大多数屏幕阅读器,也许都是)中宣布。

这意味着您的用户仍然可以获取上下文,但不必在每个单元格上都听。在任何时候,他们都可以弹出来确认表格标题是什么。

+0

你是说用''代替''? – smartmouse

+0

这可能有帮助(我做了一个CodePen):https://codepen.io/aardrian/pen/pwvwzG你将不得不用你的分页链接来测试它,但那些超出了你的问题的范围(这就是为什么我没有讨论他们需要成为正确的链接)。 – aardrian

+0

感谢您的支持;) – smartmouse