比較記事や料金表など、情報を整理して伝えたいときに便利なのがテーブル(表)です。ただ、テーブルが横長になると「どの項目の情報か分かりづらい。」こともあります。
そこで役立つのが、一部のセル(見出しなど)を固定表示できるテーブルです。スクロールしても見出しが固定されているので、情報が格段に読みやすくなります。
この記事では、コピペで使える「セルを固定表示するテーブル」のつくり方をご紹介します。HTMLとCSSを少し調整するだけで、すぐに導入できます。
目次
セルを固定表示するテーブルとは?
次のようなテーブルのことです。左側の「見出しのセル」を固定しているため、他の項目をスクロールして確認できます。
TCDのWordPressテーマをテーブルにまとめた例
複数の商品・サービスを紹介するまとめ記事や料金表、読者に比較・検討を促す記事と相性がいいのが、こういったテーブルです。項目が多いテーブルでも端までスクロールする必要がなく、どの商品についての情報なのか一目瞭然です。
上記テーブルのように、行ごとの背景色を交互に変更しておくと、見間違いも減らせるのでオススメです。
つくり方
まずは、通常のテーブルをつくってください。CSSで調整するので、HTMLはほぼ変更しません。先ほどのテーブルのHTMLとCSSをそれぞれ記載しておきます。コピペしてご活用いただけます。
HTML
通常のテーブルに手を加えるのは、以下2点のみです。
- テーブル全体を、クラス名(table-scroll)をつけたdivタグで囲む。
- 固定したいセル(thタグ)部分に、クラス名(sticky)をつける
<div class="table-scroll">
<table>
<tr>
<th class="sticky"><strong>テーマ名</strong></th>
<td><strong>コンセプト</strong></td>
<td><strong>リリース日</strong></td>
<td><strong>価格(税込)</strong></td>
<td><strong>解説記事</strong></td>
<td><strong>ダウンロード</strong></td>
</tr>
<tr>
<th class="sticky"><a href="https://demo.tcd-theme.com/tcd116/" target="_blank">PANDORA</a></th>
<td>ブログ・メディア</td>
<td>2025-05-21</td>
<td>¥41,800</td>
<td><a href="https://tcd-theme.com/2025/05/pandora.html">解説記事</a></td>
<td><a href="https://tcd-theme.com/tcd116/" target="_blank">公式ページ</a></td>
</tr>
<tr>
<th class="sticky"><a href="https://demo.tcd-theme.com/tcd115/" target="_blank">AIDER</a></th>
<td>士業・コーポレートサイト</td>
<td>2025-04-30</td>
<td>¥40,590</td>
<td><a href="https://tcd-theme.com/2025/04/aider.html">解説記事</a></td>
<td><a href="https://tcd-theme.com/tcd115/" target="_blank">公式ページ</a></td>
</tr>
<tr>
<th class="sticky"><a href="https://demo.tcd-theme.com/tcd114/" target="_blank">QUALIA</a></th>
<td>ヨガ・ピラティススタジオ</td>
<td>2025-04-10</td>
<td>¥38,500</td>
<td><a href="https://tcd-theme.com/2025/04/qualia.html">解説記事</a></td>
<td><a href="https://tcd-theme.com/tcd114/" target="_blank">公式ページ</a></td>
</tr>
</table>
</div>
CSS
CSSは多いですが、初心者の方はまずはコピペで利用してみてください。それぞれ役割を記載していますので、適宜変更してもOKです。下記記述にはスマホで見た際のスタイル調整も含まれています。
.table-scroll {
overflow-x: auto; /* 横スクロールを許可 */
}
.table-scroll table {
width: 100%; /* 親要素幅に合わせる */
min-width: 1000px; /* 最小幅を1000pxに固定 */
border-collapse: collapse; /* 境界線を重ねて1本に */
table-layout: fixed; /* セル幅を固定してレイアウト*/
}
/* 共通セル */
.table-scroll th,
.table-scroll td {
padding: 15px; /* セル内余白 */
border: 1px solid #ccc; /* 薄いグレーの境界線 */
white-space: nowrap; /* テキスト改行禁止 */
width: 200px; /* ベースのセル幅 */
}
/* 固定セル */
.table-scroll th.sticky {
position: sticky; /* スクロールしても固定 */
left: 0; /* 左端に固定 */
top: 0; /* 上端に固定 */
background-color: #eee; /* 薄いグレー背景 */
border-left: none; /* 左境界線は消す */
border-right: none; /* 右境界線も消す(二重線用に) */
width: 60px; /* 固定列の幅 */
z-index: 2; /* 他セルより前面に表示 */
}
/* セル幅調整 */
.table-scroll td:nth-child(2) { width: 80px; }
.table-scroll td:nth-child(3) { width: 50px; }
.table-scroll td:nth-child(4) { width: 50px; }
.table-scroll td:nth-child(5) { width: 50px; }
.table-scroll td:nth-child(6) { width: 50px; }
/* 交互に背景色をつけて見やすく */
.table-scroll table tr:nth-child(even) td,
.table-scroll table tr:nth-child(even) th.sticky {
background-color: #fafafa; /* 偶数行の背景 */
}
.table-scroll table tr:nth-child(odd) td,
.table-scroll table tr:nth-child(odd) th.sticky {
background-color: #ffffff; /* 奇数行の背景 */
}
/* 固定セルの右端に二重線を表示する装飾 */
.table-scroll th.sticky::before {
content: ""; /* 疑似要素の生成 */
position: absolute; /* 親セル内に絶対配置 */
top: 0; left: 0; /* 左上を基準に */
width: 100%; height: 100%; /* セル全体を覆うサイズ */
border-left: 1px solid #ccc; /* 左側に細い線 */
border-right: 3px double #aaa; /* 右側に太い二重線 */
background: #eee; /* 背景色で文字の透け防止 */
z-index: -1; /* 本文の背面に配置 */
box-sizing: content-box; /* 境界線を正確に描画 */
}
/* すべてのセルの文字を中央揃え */
.table-scroll th,
.table-scroll td {
text-align: center;
}
/* スマホ時のスタイル調整 */
@media screen and (max-width: 768px) {
/* 固定セル(左端の列)幅を狭く */
.table-scroll th.sticky {
width: 30px;
}
/* その他セル幅 */
.table-scroll td:nth-child(2) {
width: 40px;
}
.table-scroll td:nth-child(3),
.table-scroll td:nth-child(4),
.table-scroll td:nth-child(5),
.table-scroll td:nth-child(6){
width: 30px;
}
}
カスタマイズ方法
テーブルに入れる内容によって、さまざまな微調整が必要になるケースがあります。
「行ごとに背景色を変更したい。」
「セル内の文字の配置や、セル幅を変えたい。」
「スマホでの見え方も調整したい。」
という方は、下記を参考にCSSを編集してみてください。
行ごとに背景色を変更する
特定の行に背景色をつけて、見やすさや区切りを強調したいときは、以下のように記述します。「#fafafa」の箇所に色コードを記載します。
以下の記述は、偶数行に色がつくので、背景色が交互に変わる指定方法になります。
/* 偶数行の背景色を薄いグレーに */
.table-scroll tr:nth-child(even) td,
.table-scroll tr:nth-child(even) th.sticky {
background-color: #fafafa;
セル内の文字の配置を変える
文字を左寄せ・右寄せ・中央寄せに変更できます。内容によっては、すべて中央寄せにした方が綺麗に見えることもあります。
/* すべて中央寄せ(初期設定) */
.table-scroll th,
.table-scroll td {
text-align: center;
}
/* 4列目のみ右寄せ */
.table-scroll td:nth-child(4) {
text-align: right;
}
セルの幅を調整する
列ごとに幅を指定してテーブルを整えたいときは、以下のように編集します。セルの内容が短いのに、余白が広すぎると不細工ですので、こういった調整もおすすめです。
/* 固定セルの幅 */
.table-scroll th.sticky {
width: 120px;
}
/* 2列目の幅を200pxに */
.table-scroll td:nth-child(2) {
width: 200px;
}
スマホでの見え方を調整する
画面幅が狭いスマホでは、セル幅を変更して見やすく調整するのもいいですね。スマホで閲覧するユーザーが主流なので、必ず調整しておくのがオススメです。
@media screen and (max-width: 768px) {
/* 固定セル(左端の列)幅を狭く */
.table-scroll th.sticky {
width: 30px;
}
/* その他セル幅 */
.table-scroll td:nth-child(2) {
width: 40px;
}
.table-scroll td:nth-child(3),
.table-scroll td:nth-child(4),
.table-scroll td:nth-child(5),
.table-scroll td:nth-child(6){
width: 30px;
}
}
TCDテーマでテーブルを使うコツ
TCDテーマユーザーの方は、テーブルのHTML,CSSを登録しておけます。都度コピペする手間がなく、再利用や使い回し時に便利です。
TCDオリジナルの無料プラグイン「TCDクラシックエディタ」に対応しているテーマであれば、TCDクラシックエディタ > クイックタグから「カスタムタグ」を追加して、HTMLとCSSを登録しておけます。
これで「セル固定テーブル」などと登録しておけば、記事制作時にワンタッチで呼び出すことが可能です。まとめ記事や比較記事を頻繁に書く方は、ぜひこちらの機能をご活用ください。
まとめ
今回は、「一部のセルを固定表示するテーブル」のつくり方をご紹介しました。
表が横に長くなっても、見出しセルを固定しておけば「どの項目の情報か分からない」といったストレスを減らせます。比較記事や料金表など、複数の情報を並べるコンテンツと相性が抜群です。
HTMLとCSSのコピペだけで実現できますし、読者にとって見やすいテーブルなので、ぜひ今後の記事作成に取り入れてみてください。

WordPressは、投稿エディタでテーブル(table)が直感的に作成できます。 WordPressは直感的にテーブルが作成できる。 ただ、標準的なテーブルは作成できますが、例外的なテーブルの作成には向いていません。 見やすくて綺麗なテーブルにしようと思うと、どうしてもHTM...

WordPressの記事の中でテーブル表(table)を作るには、WordPressのデフォルトエディタである「グーテンベルク」や「ビジュアルエディタ」でできます。 他にはプラグインを使って作成する方法もあります。テーブル作成用のWordPressプラグインで有名なのは「TablePress」...

「エクセルやワードで作った表をテーブルタグに変換するのが面倒」 「箇条書きを一発でulタグに変換したい」 そんな風に思ったことはありませんか? 記事を外注したり、人の記事をWordPressに入稿する仕事をしている人にとって、表や箇条書きは面倒なhtml整形が必要であり、悩みの種です。そこ...

WordPressのブロックエディタは、テーブル(表)の各セルを個別にカスタマイズできない問題があります。 直感的に操作できるブロックエディタにも関わらず、テーブルだけはクラシックエディタを使う必要がありました。この問題を解決してくれるのが、今回紹介するFlexible Table Block...
WordPressテーマ集
コメント