2009-06-07 6 views
5

Supongamos que tiene una tabla HTML, con una celda <th> que abarca varias columnas, p.¿Cuál es el valor de ámbito correcto que se debe utilizar para una celda de tabla HTML <th> que abarca varias columnas?

<table> 
    <tr> 
     <th colspan="3" scope="?">Scores</th> 
     <!-- ...more headings here... --> 
    </tr> 
    <tr> 
     <th scope="col">English</th> 
     <th scope="col">Maths</th> 
     <th scope="col">Science</th> 
     <!-- ...more sub-headings here... --> 
    </tr> 
    <tr> 
     <td>12</td> 
     <td>16</td> 
     <td>20</td> 
     <!-- ...more cells here... --> 
    </tr> 
</table> 

¿Cuál es el valor correcto para el atributo de alcance para la celda del encabezado de expansión? col parece incorrecto ya que encabeza varias columnas, pero colgroup no parece correcto si realmente no tengo ninguna etiqueta colgroup.

Respuesta

6

El WebAIM (Web Accessibility in Mind) grupo tiene un gran artículo sobre creating accessible data tables. En general, recomiendan evitar filas o columnas distribuidas, ya que los lectores de pantalla no pueden interpretar el marcado de manera confiable.

A menos que se eviten por completo las columnas cruzadas, he tenido mucha suerte usando los atributos id/headers en combinación con el atributo scope. Aunque el marcado es más detallado, esto parece simplificar las cosas para JAWS, y como resultado tiene menos problemas para interpretar los datos.

Esto es lo que su ejemplo se vería con id/encabezados:

<table> 
    <tr> 
     <th id="scores" colspan="3">Scores</th> 
    </tr> 
    <tr> 
     <th id="english" scope="col">English</th> 
     <th id="maths" scope="col">Maths</th> 
     <th id="science" scope="col">Science</th> 
    </tr> 
    <tr> 
     <td headers="scores english">12</td> 
     <td headers="scores maths">16</td> 
     <td headers="scores science">20</td> 
    </tr> 
</table> 
+0

Gran materia , Gracias. Me inclinaría por el lado de los lectores de pantalla que apoyan la especificación en lugar de que todos codifiquen sus peculiaridades, pero es genial documentar las peculiaridades. –

1

Tal vez la función de subtítulos pueden ser más adecuados para usted ...

<table> 
    <caption>Scores</caption> 
    <thead> 
    <tr> 
     <th scope="col">English</th> 
     <th scope="col">Maths</th> 
     <th scope="col">Science</th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr> 
     <td>12</td> 
     <td>16</td> 
     <td>20</td> 
    </tr> 
    </tbody> 
</table> 

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption

+0

Ah, sí, posiblemente. El caso de uso real que tenía en mente era una tabla con más columnas que en mi HTML de ejemplo, por lo que el encabezado que abarca varias columnas en realidad no abarcó toda la tabla. Enmendaré el ejemplo en consecuencia. –

+1

Gotcha. La respuesta de Dave al usar las identificaciones parece ser exactamente lo que estabas buscando. Ya sabes, hace 4 años :) – MetalAdam

Cuestiones relacionadas