純CSS將HTML的Table的行列互換
純 CSS 解決方案:將HTML Table的行(row)以及列(column)對調,不需要任何 JavaScript 程式碼。
先看demo,原本的Table是:
| Type | For |
|---|---|
| aa | ā |
| ii | ī |
| uu | ū |
| "n | ṅ |
| .m | ṃ |
| ~n | ñ |
| .t | ṭ |
| .d | ḍ |
| .n | ṇ |
| .l | ḷ |
利用CSS行列互換後變成:
| Type | For |
|---|---|
| aa | ā |
| ii | ī |
| uu | ū |
| "n | ṅ |
| .m | ṃ |
| ~n | ñ |
| .t | ṭ |
| .d | ḍ |
| .n | ṇ |
| .l | ḷ |
tr { display: block; float: left; }
th, td { display: block; }
我們甚至還可以透過 CSS 來回切換行列,請按下方『行列互換』的文字數次看結果:
| Type | For |
|---|---|
| aa | ā |
| ii | ī |
| uu | ū |
| "n | ṅ |
| .m | ṃ |
| ~n | ñ |
| .t | ṭ |
| .d | ḍ |
| .n | ṇ |
| .l | ḷ |
上面這個來回切換行列的程式碼如下:
HTML:
<label for="element-toggle">行列互換</label>
<input id="element-toggle" type="checkbox" />
<table id="toggled-element">
<tr><th>Type</th><th>For</th></tr>
<tr><td>aa</td><td>ā</td></tr>
<tr><td>ii</td><td>ī</td></tr>
<tr><td>uu</td><td>ū</td></tr>
<tr><td>"n</td><td>ṅ</td></tr>
<tr><td>.m</td><td>ṃ</td></tr>
<tr><td>~n</td><td>ñ</td></tr>
<tr><td>.t</td><td>ṭ</td></tr>
<tr><td>.d</td><td>ḍ</td></tr>
<tr><td>.n</td><td>ṇ</td></tr>
<tr><td>.l</td><td>ḷ</td></tr>
</table>
CSS:
label[for=element-toggle] {
cursor: pointer;
color: red;
}
#element-toggle {
display: none;
}
#element-toggle:checked ~ #toggled-element tr {
display: block;
float: left;
}
#element-toggle:checked ~ #toggled-element th,
#element-toggle:checked ~ #toggled-element td {
display: block;
}
來回切換的技巧說明請看 [4] 。
參考:
| [1] |
| [2] |
| [3] | javascript - HTML Table with vertical rows - Stack Overflow |
| [4] | Pure CSS Toggle (Show/Hide) HTML Element |