これを説明するのは難しいので、ここにすべての例を見ることができるペンがあります。
アクセシビリティにはどちらが良いですか?
オプション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>
など。
これを効果的にテンプレート化するにはどうすればよいですか?
テーブルはマークアップの水平方向の行で定義されるため、列を変更するロジックをすべてのtrsに振りかける必要があります。
疑似コード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
これは機能しますが、使用と更新が非常に困難です。サブカテゴリを持つすべての列で、指数関数的に複雑になります。
このデータをアクセス可能な方法で表示し、拡張可能で更新しやすい方法でテンプレート化することもできますか?