
tableの表をgridレイアウトに
HTMLのtableタグは行と列の組み合わせによるセルに含まれた表形式のデータによる2次元の表で表現される情報です。
例えば以下のようなtableタグのコードはブラウザ上では次のような表で描画されます。
<table>
<tr>
<th>1列目</th>
<th>2列目</th>
<th>3列目</th>
</tr>
<tr>
<td>1行1列</td>
<td>1行2列</td>
<td>1行3列</td>
</tr>
<tr>
<td>2行1列</td>
<td>2行2列</td>
<td>2行3列</td>
</tr>
</table>
1列目 | 2列目 | 3列目 |
---|---|---|
1行1列 | 1行2列 | 1行3列 |
2行1列 | 2行2列 | 2行3列 |
※ tableタグにはWordPressのスタイルシートが適用されています。
初期のHTMLから使われてきたtableタグですが、CSSのグリッドレイアウトのように3x3を2x5のように変更できないため、表ではなくレイアウトに使うのは不向きです。
ChatGPTでtableの表をgridに変換
コーディングをしているとtableタグで作成されたコードをCSSのgridを使用したコードに修正したいことがあります。
そんなときはChatGPTを使えばtableの表をgridに変換できます。
やり方は「以下のHTMLをtableからgridに変換して。HTMLとCSSは分けて出力して。」と書いたあと、tableタグのコードを貼り付けて送信するだけです。
以下のHTMLをtableからgridに変換して。 HTMLとCSSは分けて出力して。 <table> <tr> <th>1列目</th> <th>2列目</th> <th>3列目</th> </tr> <tr> <td>1行1列</td> <td>1行2列</td> <td>1行3列</td> </tr> <tr> <td>2行1列</td> <td>2行2列</td> <td>2行3列</td> </tr> </table>
送信すると以下のようなコードを返します。
※ ChatGPTは常に同じコードを返すわけではないので注意

このHTMLとCSSを実際に表示させると以下のようになります。
<div class="grid-container">
<div class="header">1列目</div>
<div class="header">2列目</div>
<div class="header">3列目</div>
<div>1行1列</div>
<div>1行2列</div>
<div>1行3列</div>
<div>2行1列</div>
<div>2行2列</div>
<div>2行3列</div>
</div>
.grid-container {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(3, auto);
gap: 10px;
padding: 10px;
}
.header {
font-weight: bold;
background-color: #ccc;
padding: 5px;
}
tableタグからdivタグに変更されても3列3行になっていることが確認できます。
セルが結合したtableもgridにできる
rowspanやcolspanを使ってセルを結合したtableの表もgridを使用したコードに変換できます。
例えば以下のようなコードがあるとします。
<table class="sample">
<tr>
<th>1列目</th>
<th>2列目</th>
<th>3列目</th>
</tr>
<tr>
<td rowspan="2">1行1列</td>
<td>1行2列</td>
<td>1行3列</td>
</tr>
<tr>
<td colspan="2">2行2列</td>
</tr>
</table>
1列目 | 2列目 | 3列目 |
---|---|---|
1行1列 | 1行2列 | 1行3列 |
2行2列 |
これをChatGPTでgridのコードに変換させると以下のようなコードを返します。
<div class="grid">
<div class="header">1列目</div>
<div class="header">2列目</div>
<div class="header">3列目</div>
<div class="cell" style="grid-row: 2 / span 2;">1行1列</div>
<div class="cell">1行2列</div>
<div class="cell">1行3列</div>
<div class="cell" style="grid-column: 2 / span 2;">2行2列</div>
</div>
.grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: auto;
grid-gap: 10px;
}
.header {
background-color: #ccc;
padding: 10px;
}
.cell {
background-color: #fff;
padding: 10px;
border: 1px solid #ccc;
}
セルの結合を含むtableタグからgridへの変換は手作業でやるのは難しいですが、ChatGPTを使えば簡単にできます。
まとめ
tableの表をgridレイアウトに変換する作業はChatGPTを使用すれば簡単にできます。
ただし、ChatGPTの返すコードは常に同じではなく、正しいとは限らないので、生成されたコードは必ず人間の目でチェックしてください。