ホームへ

【html/CSS】tableの縦横を入れ替える方法

2022年09月25日

「パソコンで横長の表をスマホで縦にしたい!」

tableの縦横を下記のように入れ替える方法を解説します。

↓変更前

都道府県 県庁所在地 人口 面積
北海道 札幌市 518万人 78400㎢
東京都 新宿区 1400万人 2190㎢
大阪府 大阪市 880万人 1910㎢

↓縦横入れ替え後

都道府県 県庁所在地 人口 面積
北海道 札幌市 518万人 78400㎢
東京都 新宿区 1400万人 2190㎢
大阪府 大阪市 880万人 1910㎢

tableにwriting-mode:vertical-lr

「writing-mode:vertical-lr」は文字を縦書きにするCSSです。

これをtableに指定すると表の縦横マスを入れ替えることができます。

都道府県 県庁所在地 人口 面積
北海道 札幌市 518万人 78400㎢
東京都 新宿区 1400万人 2190㎢
大阪府 大阪市 880万人 1910㎢
<style>
table{
    writing-mode: vertical-lr;
}
th,td{
    writing-mode: horizontal-tb;
}
</style>
<table border="1">
    <tr>
        <th>都道府県</th>
        <th>県庁所在地</th>
        <th>人口</th>
        <th>面積</th>
    </tr>
    <tr>
        <th>北海道</th>
        <td>札幌市</td>
        <td>518万人</td>
        <td>78400㎢</td>
    </tr>
    <tr>
        <th>東京都</th>
        <td>新宿区</td>
        <td>1400万人</td>
        <td>2190㎢</td>
    </tr>
    <tr>
        <th>大阪府</th>
        <td>大阪市</td>
        <td>880万人</td>
        <td>1910㎢</td>
    </tr>
</table>

ただし、これだけでは子孫要素に「writing-mode:vertical-lr」が引き継がれ、文字が縦書きになってしまいます。

そこでthとtdに「writing-mode:horizontal-tb」を指定し、横書きに戻します。

ちなみに…display:flexでできないか試してみましたが、2行以上になったときに行の高さがそろわなくなるため、不可能でした。

「この記事の内容がよくわからなかった…」「なんかうまくいかなかった…」というかたは下記記事↓でhtmlとCSSの基本を学びましょう。
わからないまま突き進むより基本を学ぶのが結局近道です。

CSSやhtmlをマンガで学ぶ