HTMLのテーブルの列を固定する方法

HTMLのテーブルの列を固定する方法

HTMLのテーブルで列を固定するには、CSSを使って特定の列をスクロール時に固定表示する方法があります。
以下に、HTMLとCSSを分けて、列を固定する基本的な例を示します。

HTMLファイル (index.html)

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>固定列テーブル</title>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <div class="test-table-container">
    <table class="test-table">
      <thead>
        <tr>
          <th class="test-fixed-column">固定列1</th>
          <th>列2</th>
          <th>列3</th>
          <th>列4</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td class="test-fixed-column">データ1</td>
          <td>データ2</td>
          <td>データ3</td>
          <td>データ4</td>
        </tr>
        <tr>
          <td class="test-fixed-column">データ5</td>
          <td>データ6</td>
          <td>データ7</td>
          <td>データ8</td>
        </tr>
        <!-- 追加の行 -->
      </tbody>
    </table>
  </div>
</body>
</html>

CSSファイル (styles.css)

.test-table-container {
  position: relative;
  overflow: auto;
  width: 100%;
  max-height: 300px; /* 高さを調整 */
}

.test-table {
  width: 100%;
  border-collapse: collapse;
}

.test-table th,
.test-table td {
  border: 1px solid #ddd;
  padding: 8px;
}

.test-table thead th {
  background-color: #f4f4f4;
}

.test-fixed-column {
  position: sticky;
  left: 0;
  background-color: #fff; /* 背景色を設定 */
  z-index: 2; /* 他の列よりも前面に表示 */
}

.test-table thead th.test-fixed-column {
  top: 0;
  z-index: 3; /* ヘッダーが他の内容よりも前面に表示 */
}

説明

1. HTML構造:

  • tableタグでテーブルを作成し、theadでヘッダー行を、tbodyでデータ行を定義しています。
  • thやtdにtest-fixed-columnクラスを指定して、固定する列を特定します。

2. CSSスタイル:

  • test-table-containerクラスで、テーブルのコンテナにスクロール機能を設定し、高さを制限します。
  • test-tableクラスで、テーブルの幅を100%に設定し、セルの境界線とパディングを指定します。
  • test-fixed-columnクラスで、position: stickyを使って列をスクロール時に固定し、背景色と前面表示を設定します。
  • ヘッダーのtest-fixed-columnに対してもposition: stickyを設定し、top: 0でヘッダーの位置を固定します。

この方法で、特定の列をスクロール時に固定することができます。