これを説明するのは難しいので、ここにすべての例を見ることができるペンがあります。
アクセシビリティにはどちらが良いですか?
オプション1
<table>
<thead>
<tr>
<th>Thing 1</th>
<th>Thing 2</th>
<th colspan=2>Thing 3</th>
<th>Thing 4</th>
<th colspan=2>Thing 5</th>
<th>Thing 6</th>
<th>Thing 7</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan=2>40</td>
<td rowspan=2>30</td>
<th>Right</th>
<th>Left</th>
<td rowspan=2>50</td>
<th>Right</th>
<th>Left</th>
<td rowspan=2>25</td>
<td rowspan=2>30</td>
</tr>
<tr>
<td>10</td>
<td>20</td>
<td>15</td>
<td>40</td>
</tr>
</tbody>
</table>
オプション2
<table>
<thead>
<tr>
<th>Thing 1</th>
<th>Thing 2</th>
<th colspan=2>Thing 3</th>
<th>Thing 4</th>
<th colspan=2>Thing 5</th>
<th>Thing 6</th>
<th>Thing 7</th>
</tr>
<tr>
<th colspan=2></th>
<th>Right</th>
<th>Left</th>
<th></th>
<th>Right</th>
<th>Left</th>
<th colspan=2></th>
</tr>
</thead>
<tbody>
<tr>
<td>40</td>
<td>30</td>
<td>10</td>
<td>20</td>
<td>50</td>
<td>15</td>
<td>40</td>
<td>25</td>
<td>30</td>
</tr>
</tbody>
</table>
サブ値(右と左)が等しい場合は、次のように表示されます。
<table>
<thead>
<tr>
<th>Thing 1</th>
<th>Thing 2</th>
<th>Thing 3s</th>
<th>Thing 4</th>
<th>Thing 5s</th>
<th>Thing 6</th>
<th>Thing 7</th>
</tr>
</thead>
<tbody>
<tr>
<td>40</td>
<td>30</td>
<td>10</td>
<td>50</td>
<td>15</td>
<td>25</td>
<td>30</td>
</tr>
</tbody>
</table>
またはこれ:
<table>
<thead>
<tr>
<th>Thing 1</th>
<th>Thing 2</th>
<th colspan=2>Thing 3</th>
<th>Thing 4</th>
<th>Thing 5s</th>
<th>Thing 6</th>
<th>Thing 7</th>
</tr>
<tr>
<th colspan=2></th>
<th>Right</th>
<th>Left</th>
<th colspan=5></th>
</tr>
</thead>
<tbody>
<tr>
<td>40</td>
<td>30</td>
<td>10</td>
<td>20</td>
<td>50</td>
<td>15</td>
<td>25</td>
<td>30</td>
</tr>
</tbody>
</table>
またはこれ:
<table>
<thead>
<tr>
<th>Thing 1</th>
<th>Thing 2</th>
<th>Thing 3s</th>
<th>Thing 4</th>
<th colspan=2>Thing 5</th>
<th>Thing 6</th>
<th>Thing 7</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan=2>40</td>
<td rowspan=2>30</td>
<td rowspan=2>10</td>
<td rowspan=2>50</td>
<th>Right</th>
<th>Left</th>
<td rowspan=2>25</td>
<td rowspan=2>30</td>
</tr>
<tr>
<td>15</td>
<td>40</td>
</tr>
</tbody>
</table>
など。
これを効果的にテンプレート化するにはどうすればよいですか?
テーブルはマークアップの水平方向の行で定義されるため、列を変更するロジックをすべてのtr
sに振りかける必要があります。
疑似コードERB
thing3()
次の場合はtrueをthing5()
返しますthing3right != thing3left
%テーブル %広告 %tr %th Thing 1 %th Thing 2 --thing3()の場合 %th Thing 3 - そうしないと %th {:colspan => "2"} Thing 3s %th Thing 4 --thing5()の場合 %th Thing 5 - そうしないと %th {:colspan => "2"} Thing 5s %th Thing 6 %th Thing 7 --!thing3()または!thing5()の場合 %tr.subcategory --if!thing3()&&!thing5() %th {:colspan => "2"} %番目の右 左% %th %番目の右 左% %th {:colspan => "2"} --elsif things3()&&!thing5() %th {:colspan => "4"} %番目の右 左% %th {:colspan => "2"} --elsif!thing3()&& things5() %th {:colspan => "2"} %番目の右 左% %th {:colspan => "4"} %tbody %tr %td = @ whatever.thing1 %td = @ whatever.thing2 %td = @ whatever.thing3right --if!thing3() %td = @ whatever.thing3left %td = @ whatever.thing4 %td = @ whatever.thing5right --if!thing5() %td = @ whatever.thing5left %td = @ whatever.thing6 %td = @ whatever.thing7
これは機能しますが、使用と更新が非常に困難です。サブカテゴリを持つすべての列で、指数関数的に複雑になります。
このデータをアクセス可能な方法で表示し、拡張可能で更新しやすい方法でテンプレート化することもできますか?