固定された(粘着性の)ヘッダーをもつテーブル


しばしば、我々は我々がある状況に遭遇しますtable それの多くのデータで.それで、我々がスクロールするとき、テーブルヘッダーはスクリーンから隠されます、そして、すぐに、我々は我々が見ているコラムを知りません.この問題は簡単にラッピングすることで対処できるtable インdiv , そして、フレンドリーなCSSのビット.

位置:粘着性
粘着性のポジショニングはハイブリッドの間であるrelative and fixed . 引用するhttps://developer.mozilla.org/en-US/docs/Web/CSS/position , 要素は、ドキュメントの通常のフローに従って配置され、その後、最寄りのスクロールの祖先に対して相対的に相殺され、トップ、右、ボトム、左の値に基づいて、テーブル関連要素を含むブロック(最上位ブロックレベルの祖先)を含みます基本的に、要素は、通常のドキュメントフローで発生します.特定のオフセットを過ぎてスクロールするまで、指定されたコンテナーの先頭に貼り付けられます.
我々はラップをするつもりですtable インdiv (これを設定することでスクロール可能にします.height and overflow-y プロパティを作成し、th 粘着性の方法でs位置.また、テーブルの内部境界を崩壊させますborder-collapse プロパティ.それは本当に簡単ですか?それは実際です.
ここでは、コードは、完全にunadulterated栄光(心配しないでください、私はアンブレラアカデミーのシーズン2から任意のスポイラーを含んでいないが、真剣に、それを見に行く).

HTML
<!DOCTYPE html>
<html>
  <head>
    <title>Sticky Header</title>
    <meta charset="UTF-8" />
    <link rel="stylesheet" href="src/styles.css" />
  </head>

  <body>
    <div class="wrapper">
      <table>
        <thead>
          <tr>
            <th>Number</th>
            <th>Name</th>
            <th>Superpower</th>
            <th>Email</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>1</td>
            <td>Luther</td>
            <td>Super-strength</td>
            <td>[email protected]</td>
          </tr>
          <tr>
            <td>2</td>
            <td>Diego</td>
            <td>Telekinesis</td>
            <td>[email protected]</td>
          </tr>
          <tr>
            <td>3</td>
            <td>Allison</td>
            <td>Rumor</td>
            <td>[email protected]</td>
          </tr>
          <tr>
            <td>4</td>
            <td>Klaus</td>
            <td>Seance</td>
            <td>[email protected]</td>
          </tr>
          <tr>
            <td>5</td>
            <td>Five</td>
            <td>Time-travel</td>
            <td>[email protected]</td>
          </tr>
          <tr>
            <td>6</td>
            <td>Ben</td>
            <td>Inter-dimensional monster</td>
            <td>[email protected]</td>
          </tr>
          <tr>
            <td>7</td>
            <td>Vanya</td>
            <td>Apocalyptic destruction</td>
            <td>[email protected]</td>
          </tr>
          <tr>
            <td>-</td>
            <td>Reginald</td>
            <td>[Spoiler] powers</td>
            <td>[email protected]</td>
          </tr>
          <tr>
            <td>-</td>
            <td>Pogo</td>
            <td>Human communication</td>
            <td>[email protected]</td>
          </tr>
          <tr>
            <td>-</td>
            <td>Cha-Cha</td>
            <td>Ruthlessness</td>
            <td>[email protected]</td>
          </tr>
          <tr>
            <td>-</td>
            <td>Hazel</td>
            <td>Compassion</td>
            <td>[email protected]</td>
          </tr>
        </tbody>
      </table>
    </div>
  </body>
</html>

CSS
body {
  font-family: "Segoe UI", sans-serif;
}

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

th,
td {
  padding: 8px;
}

th {
  text-align: left;
  background: #eee;
  position: sticky;
  top: 0px;
}

.wrapper {
  border: 1px solid #ddd;
  width: 100%;
  height: 300px;
  overflow-y: auto;
}
上の例では、CodesandBoxでここで実行できます.https://codesandbox.io/s/determined-buck-396hm
長い間、今、そして幸せな位置決め!