HTMLのdivタグを使用してCSSで表を作成する方法について解説します。
HTML
HTMLの基本的な構造を定義します。divタグを使用して、テーブル、行、セルを表現します。
<div class="table">
<div class="row">
<div class="cell">Row 1, Cell 1</div>
<div class="cell">Row 1, Cell 2</div>
</div>
<div class="row">
<div class="cell">Row 2, Cell 1</div>
<div class="cell">Row 2, Cell 2</div>
</div>
</div>
CSS
CSSを設定して、divタグが表のように見えるようにします。
.table {
display: table;
width: 100%;
border-collapse: collapse;
}
.row {
display: table-row;
}
.cell {
display: table-cell;
padding: 10px;
border: 1px solid #000;
}
/* ヘッダー用のスタイル(必要に応じて) */
.header {
background-color: #f2f2f2;
font-weight: bold;
}
完成したコード
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS Table Example</title>
<style>
.table {
display: table;
width: 100%;
border-collapse: collapse;
}
.row {
display: table-row;
}
.cell {
display: table-cell;
padding: 10px;
border: 1px solid #000;
}
.header {
background-color: #f2f2f2;
font-weight: bold;
}
</style>
</head>
<body>
<div class="table">
<div class="row header">
<div class="cell">Header 1</div>
<div class="cell">Header 2</div>
</div>
<div class="row">
<div class="cell">Row 1, Cell 1</div>
<div class="cell">Row 1, Cell 2</div>
</div>
<div class="row">
<div class="cell">Row 2, Cell 1</div>
<div class="cell">Row 2, Cell 2</div>
</div>
</div>
</body>
</html>
Header 1
Header 2
Row 1, Cell 1
Row 1, Cell 2
Row 2, Cell 1
Row 2, Cell 2
- .tableクラスで全体をテーブルレイアウトに設定します。
- .rowクラスで各行を定義します。
- .cellクラスで各セルを定義します。
- .headerクラスは、ヘッダー行のスタイルを設定するために使用されます(オプション)。
必要に応じて、スタイルや構造をカスタマイズして、より複雑な表を作成することも可能です。
よくある質問(FAQ)
Q. CSSのdisplay: tableでテーブルレイアウトを作るには?
A. parentにdisplay: table、子にdisplay: table-row、孫にdisplay: table-cellを設定します。HTMLのtable/tr/td構造と同様のレイアウトが実現できます。
Q. display: tableとHTML tableタグの違いは何ですか?
A. HTMLのtableはセマンティックに表形式データを示します。display: tableはCSSで任意のHTML要素をテーブルのように配置するためのものです。表形式データにはHTMLのtableタグを使うべきです。
Q. display: tableでセル間のスペースを設定するには?
A. border-spacingプロパティで設定できます。例:display: tableの要素にborder-spacing: 10pxを設定すると各セル間に10pxのスペースが生まれます。
