CSSでテーブルのヘッダーを固定する方法!position: stickyで快適なスクロールを実現しよう
生徒
「Webサイトで長い表を見ると、下にスクロールした時に一番上の見出しが消えてしまい、何の値かわからなくなって困ります。ヘッダーを固定することはできますか?」
先生
「CSSのposition: stickyという機能を使うと、スクロールしても見出しを画面の上部にピタッと張り付かせて固定することができますよ。」
生徒
「それは便利ですね!具体的にどのように設定するのですか?」
先生
「それでは、初心者の方でもすぐに使える基本的な設定手順を見ていきましょう!」
1. position: stickyとは何か
position: stickyとは、CSSを使って要素を「ある条件で固定する」ための命令です。これを使うと、最初は通常の流れの中にいますが、指定した位置までスクロールしたときに、その場所に固定されるという動きを作れます。テーブルのヘッダーに適用すれば、どれだけ下の行まで移動しても、見出しが常に目の前にある状態を維持できます。プログラミングの複雑な計算は不要で、CSSの数行を書くだけで実装できるため、Webサイト制作において非常に人気のある手法です。
2. テーブルヘッダーを固定するための基本CSS
テーブルのヘッダー(thタグ)を固定するには、対象のth要素に対してposition: stickyを指定し、top: 0と書き加えます。top: 0は「上端から0の位置に固定する」という意味です。
<style>
.sticky-table {
border-collapse: collapse;
width: 100%;
}
.sticky-table th {
position: sticky;
top: 0;
background-color: #007bff;
color: white;
padding: 10px;
}
</style>
<table class="sticky-table">
<thead>
<tr>
<th>項目名A</th>
<th>項目名B</th>
</tr>
</thead>
<tbody>
<tr><td>データ1</td><td>データ2</td></tr>
</tbody>
</table>
ブラウザ表示
3. スクロール領域を制限する方法
画面全体ではなく、表の中だけをスクロールさせたい場合もあります。その際は、表を囲う親要素に高さ(height)を指定し、overflow-y: autoを設定します。これにより、表の枠内で内容だけが動き、ヘッダーはその枠の上部に固定されるようになります。ダッシュボードや管理画面など、限られたスペースに大量のデータを表示する場合に非常に有効なテクニックです。
<style>
.scroll-container {
height: 150px;
overflow-y: auto;
}
.scroll-container th {
position: sticky;
top: 0;
background-color: #333;
color: #fff;
}
</style>
<div class="scroll-container">
<table>
<thead>
<tr><th>日付</th><th>売上</th></tr>
</thead>
<tbody>
<tr><td>2026/06/01</td><td>1000</td></tr>
<tr><td>2026/06/02</td><td>2000</td></tr>
<tr><td>2026/06/03</td><td>3000</td></tr>
</tbody>
</table>
</div>
ブラウザ表示
4. なぜ背景色の指定が必要なのか
stickyを設定するとき、背景色を必ず指定しなければならない理由があります。実は、position: stickyで固定された要素は背景が透明のままだと、下の行のテキストが透けて見えてしまい、非常に読みづらくなります。背景色を指定することで、下の行を隠しながらきれいに固定されるようになります。これは初心者の方が見落としがちなポイントですので、必ず背景色を設定するように意識しましょう。
<style>
th {
position: sticky;
top: 0;
background-color: white; /* これを忘れない */
border-bottom: 2px solid #ddd;
}
</style>
<table>
<tr><th>見出し</th></tr>
<tr><td>下の行が透けない設定です</td></tr>
</table>
ブラウザ表示
5. スマホで見やすくするレスポンシブ対応
スマートフォンで表を見る際、画面幅が狭くて表が崩れることがあります。これに対応するには、親要素にスクロール機能を持たせることが基本です。stickyと組み合わせて使うことで、スマホユーザーにとってもストレスのない情報閲覧体験を提供できます。Webデザインにおいて、「ユーザーがいかに情報を探しやすくするか」という視点はSEOの観点からも重要です。見やすい表はユーザーのサイト滞在時間を延ばします。
6. ブラウザの対応状況を確認する
現在、主要なブラウザのほとんどがposition: stickyに対応しています。古いInternet Explorerなどは非対応ですが、現代のWeb環境ではほぼ無視して問題ありません。初心者の方が学習を始める際、ブラウザの対応をあまり過度に心配する必要はありません。まずはChromeなどのモダンブラウザで正しく表示されることを確認し、徐々に複雑なレイアウトに挑戦していくのが上達の近道です。
<style>
.card-header {
position: sticky;
top: 10px;
background-color: #f8f9fa;
padding: 5px;
}
</style>
<div class="card-header">
<strong>固定される見出しエリア</strong>
</div>
<p>ここに長い文章が続きます。<br>スクロールすると見出しがついてきます。</p>
ブラウザ表示
7. Webデザインの効率化とSEO効果
情報量が多いサイトほど、こうした細やかなUI(ユーザーインターフェース)の工夫が差を生みます。ユーザーが何を見ているか直感的にわかるサイトは、検索エンジンからも好まれます。position: stickyは、たった数行のCSSで実装できるため、サイトの読み込み速度にもほとんど影響を与えません。快適なサイト運営のために、ぜひ今日から取り入れてみてください。パソコン操作が苦手な方でも、コピペから始めればすぐにサイトをかっこよく変えられますよ。
【60分集中】Flexboxを完全攻略!最新CSS3で「崩れない・迷わない」モダンUI構築セミナー
「魅せる力」をコードで実現。CSS3でモダンWebデザインのプロトタイピングを。
本講座では、単に色を変えるだけではなく、「ユーザーを迷わせないUIデザイン」と「崩れないレイアウト設計」の本質を学びます。最新のCSS3とモダンなレイアウト手法を通じて、プロの現場で通用する「美しさと機能性を両立した実装力」を最短距離で習得します。
具体的なワークショップ内容と環境
【つくるもの】
HTMLで作成した骨組みに対し、商用サイトでも採用される「スタイリッシュなカード型UI」や「レスポンシブなナビゲーション」を構築します。色の選定基準や余白(ホワイトスペース)の黄金比など、デザインの理論をコードに落とし込む工程を体験してください。
【開発環境】
フロントエンド開発の標準であるVisual Studio Code (VS Code)を継続使用。CSSの記述を効率化するプラグインや、ブラウザのデベロッパーツール(検証機能)を駆使して、リアルタイムでデザインを微調整するプロのワークフローを再現します。
この60分で得られる3つの技術資産
要素の横並びや中央揃えを自由自在に操り、どんなデバイスでも崩れないレスポンシブな配置術を完全理解します。
後から修正しやすい「壊れにくいコード」の書き方を伝授。プロの現場で必須となる命名規則の考え方を学びます。
画像の最適化や軽量な装飾技法など、ページの表示速度を落とさずに高級感のある演出を行うテクニックを習得します。
※本講座は、HTMLの基礎を終えた後のステップアップ講座です。Webデザイナー、UIデザイナー、フロントエンドエンジニアへの道を切り開く「魅せる技術」を、モクモク独自のパーソナル指導で着実に定着させます。
リラックスしながら、学ぶことが大切です。しっかりと基礎を理解しましょう!
各回少人数・マンツーマン形式で徹底サポート
このセミナーの詳細・お申し込みはこちら