CSSを使用してテーブルのスタイルを設定する方法
著者は、 Diversity in Tech Fund を選択して、 Write forDOnationsプログラムの一環として寄付を受け取りました。
序章
テーブルには、Web上で長く複雑な歴史があります。 CSSが存在する前は、<table>
要素は、Web上でリッチなデザインレイアウトを作成するための唯一の可能な手段でした。 しかし、<table>
を使用してレイアウトを作成することは、意図された、または理想的な使用法ではありませんでした。 より優れたレイアウトオプションが利用できるようになったため、開発者は<table>
要素を使用して、スプレッドシートのように、意図したとおりに表形式のデータを表示できます。 これにより、セマンティックHTML を使用したり、意図した意味に合わせてHTML要素を使用したりできます。
適切にフォーマットされたHTMLは、ブラウザーに情報を提供し、ブラウザーがユーザーに最適なインターフェースを提供できるようにします。 このチュートリアルでは、テーブルのスタイル設定の視覚的な側面に焦点を当てますが、効果的なテーブルHTMLにより、視力のあるユーザー、視力のないユーザー、およびその他の状況のユーザーを含むすべてのユーザーが、表の情報をナビゲートして理解できるようになります。 <table>
要素を意図したとおりに使用すると、CSSデザインのアクセシビリティを大幅に向上させることができます。
このチュートリアルでは、<table>
要素のスタイル設定の例を実行します。 このチュートリアルの前半では、テーブル要素にブラウザのデフォルトスタイルを主に使用する一般的なテーブルレイアウトに焦点を当てます。 ブラウザのデフォルトはCSSを操作するための開始点であるため、それらが何であるかを知ることが重要です。 後半では、セクションごとに固有のスタイルを使用するようにテーブルをリファクタリングします。 チュートリアルの終わりまでに、次の画像に示すように、x軸とy軸のテーブル見出し、交互の行の色、テーブルの明確なキャプション、および強調表示されたデータポイントの異なるスタイルを持つテーブルを作成します。 :
前提条件
- カスケードと特異性を使用してCSSスタイルをHTMLに適用する方法を読むことで得られるCSSのカスケードと特異性の機能の理解。
- タイプセレクター、コンビネーターセレクター、およびセレクターグループに関する知識。これらはCSSでスタイル設定するHTML要素を選択する方法にあります。
- ローカルマシンに
index.html
として保存された空のHTMLファイルで、選択したテキストエディタとWebブラウザからアクセスできます。 開始するには、 HTMLプロジェクトの設定方法チュートリアルを確認し、HTML要素の使用方法と理解方法に従ってブラウザでHTMLを表示する方法を確認してください。 HTMLを初めて使用する場合は、HTMLシリーズでWebサイトを構築する方法全体を試してください。
<table>
HTMLの設定
<table>
のスタイルを設定する前に、操作するものが必要です。 <table>
要素内に存在する可能性のある要素はたくさんあります。 <table>
要素は、テーブル関連の子孫要素が含まれている場合にのみ機能するため、HTMLセマンティクスの最良の例の1つです。 このステップでは、<table>
要素を作成し、サンプルデータを入力します。
まず、テキストエディタでindex.html
を開き、次のコードブロックにHTMLを追加します。
<!doctype>
<html>
<head>
<title>2019 Fourth Quarter Report</title>
<link href="styles.css" rel="stylesheet" media="all" />
</head>
<body>
<table>
</table>
</body>
</html>
この時点から追加するすべてのHTMLは、<table>
要素内に入ります。 <table>
要素自体は、表形式のコンテンツ領域のみを定義し、正しく機能するには、その中に特定の要素が含まれている必要があります。 <link>
要素は、後で追加するstyles.css
ファイルを参照し、CSSをページにロードしてスタイルを生成します。 media
属性は、コンテンツの対象となるデバイスを指定します。 この場合、これはすべてのデバイスタイプに適用されるため、all
に設定しました。
まず、<table>
要素内に<caption>
要素を追加し、その中に2019第4四半期レポートのテキストを追加します。 テキストエディタのindex.html
ファイルで、次のコードブロックから強調表示されたHTMLを追加します。
...
<table>
<caption>2019 Fourth Quarter Report</caption>
</table>
...
<caption>
には、テーブルの名前または説明が含まれています。 この要素は、スクリーンリーダーなどの支援技術を使用するユーザーに役立つ情報を提供するため、必ずテーブルに含めてください。 <caption>
要素を<table>
の<title>
と考えると役立つ場合があります。
次に、次のコードブロックで強調表示されているHTMLに示すように、<thead>
に続いて<tbody>
要素を兄弟として<caption>
要素に追加します。
...
<table>
<caption>2019 Fourth Quarter Report</caption>
<thead></thead>
<tbody></tbody>
</table>
<thead>
要素は、<header>
と同等の<table>
であり、見出し情報のコンテキストを定義します。 <thead>
と同様に、<tbody>
要素は、表形式のコンテンツが存在する領域を定義します。 どちらの場合も、エリアを定義しますが、それ自体ではコンテンツを表示しません。 この例では使用されていませんが、<tfoot>
要素は、合計などの要約情報を提供するために存在します。
HTMLのテーブルは、列ではなく行で作成されます。 テーブルの各セルは、<tr>
要素内に含まれています。 これらの要素は通常、<thead>
、<tbody>
、および<tfoot>
の子孫ですが、area要素が使用されていない場合は、<table>
の直接の子孫になることもできます。
次のコードブロックで強調表示されているように、テキストエディタのindex.html
に戻り、本文に1行の見出し行と3行のコンテンツを追加します。
...
<table>
<caption>2019 Fourth Quarter Report</caption>
<thead>
<tr></tr>
</thead>
<tbody>
<tr></tr>
<tr></tr>
<tr></tr>
</tbody>
</table>
...
最後の2つの要素は機能的に類似しており、どちらも<table>
HTML構造の最後の要素です。つまり、前の要素とは異なり、これらにはテーブル以外の要素を含めることができます。
<td>
要素には、個々のテーブルデータポイントが含まれます。 <th>
は、コンテンツを行または列の見出しとして定義します。 テーブル要素は、マークアップ構造が視覚的構造と直接相関するため、HTMLに固有のものです。 テーブルをスプレッドシートと見なす場合、<th>
および<td>
要素はセルとして動作します。 このテーブルに4つの列を含めるには、各<tr>
に4つ以上の<td>
または<th>
要素が必要です。 データの内容によっては、これは空白の<th>
または<td>
要素があることを意味する場合があります。 HTMLコメントを使用して、要素が意図的に空白になっている場合を説明すると役立つ場合があります。
次のコードブロックから強調表示されたHTMLをindex.html
ファイルに追加します。
...
<table>
<caption>2019 Fourth Quarter Report</caption>
<thead>
<tr>
<th><!-- Intentionally Blank --></th>
<th>October</th>
<th>November</th>
<th>December</th>
<tr>
</thead>
<tbody>
<tr>
<th>Projected</th>
<td>$820,180</td>
<td>$841,640</td>
<td>$732,270</td>
</tr>
<tr>
<th>Actual</th>
<td>$850,730</td>
<td>$892,580</td>
<td>$801,240</td>
</tr>
<tr>
<th>Utilization</th>
<td>83%</td>
<td>90%</td>
<td>75%</td>
</tr>
</tbody>
</table>
...
注:スプレッドシートソフトウェアと同様に、1つのセルが2つの列を占める場合など、セルを結合する必要がある場合があります。 これは可能ですが、CSSではなくセルでHTML属性を使用する場合にのみ可能です。 より複雑なテーブルを扱う場合は、このことに留意することが重要です。
テーブルを書き留めたので、ファイルを保存します。 次に、Webブラウザでindex.html
を開きます。 次の画像は、FirefoxWebブラウザにロードされたときにこのテーブルのブラウザのデフォルトスタイルがどのように表示されるかを示しています。
このセクションでは、表形式データのHTMLを設定します。 アクセス可能なデータセットを作成するために、テーブルが一連の要素を異なる順序で組み合わせて作成される方法について学習しました。 次に、border
プロパティとborder-collapse
プロパティを使用して、テーブルへのスタイルの適用を開始します。
border
およびborder-collapse
を使用して初期テーブルスタイルを作成する
テーブルのスタイルを設定するための最初のステップは、ブラウザのデフォルトのスタイルと動作のいくつかを理解することです。 このセクションでは、border
プロパティとborder-collapse
プロパティについて説明し、セル間に境界線を作成する方法を示します。
テーブルのスタイル設定を開始するには、テキストエディタでindex.html
と同じフォルダにstyles.css
という名前のファイルを作成して開きます。 th
要素セレクターとtd
要素セレクターで構成されるセレクターグループを追加します。 次に、セレクターブロックで、次のコードブロックに示すように、値が1px solid black
のborder
プロパティを追加します。
th, td {
border: 1px solid black;
}
変更内容をstyles.css
に保存し、Webブラウザでindex.html
を開きます。 凝集グリッドの代わりに、独自の境界線を持ついくつかのボックスがあります。 次の画像は、テーブルがWebブラウザでどのように表示されるかを示しています。
このデフォルトを変更するには、テキストエディタでstyles.css
に戻り、ファイルの先頭にtable
要素セレクタを追加します。 次に、セレクターブロックで、border-collapse
プロパティを適用します。 このプロパティのデフォルトはseparate
ですが、ここではcollapse
の値に変更します。 これにより、テーブルセル間の間隔が削除され、境界線がオーバーラップします。 次のコードブロックで強調表示されているCSSは、styles.css
ファイルに何を追加するかを示しています。
table {
border-collapse: collapse;
}
th, td {
border: 1px solid black;
}
Webブラウザーを開き、index.html
を更新します。 これで、テーブルに複数の交差する黒い線で定義されたグリッドが作成されます。 次の画像は、ブラウザで境界線がどのように表示されるかを示しています。
このセクションでは、border
プロパティを使用して、th
およびtd
要素セレクターを使用して各テーブルセルに境界線を適用しました。 また、デフォルトではテーブルセルがスペースで区切られていることも学びました。 table
要素セレクターにborder-collapse
プロパティを適用し、collapse
プロパティを使用して、テーブルセル間のスペースを削除しました。 次のセクションでは、padding
およびwidth
プロパティを使用して、テーブルのサイズを定義します。
テーブルのサイズの設定
次に、データを読みやすくするために、テーブルセルに間隔を追加します。 テーブルセルへの空白の追加とテーブルのバランスの改善に対処するために、このセクションではwidth
およびpadding
プロパティに焦点を当てます。
現在のところ、各セルのコンテンツは、コンテンツの真上に境界線が表示されてまとめられています。 また、テーブルの幅がその内容と同じであることに気付いたかもしれません。 <table>
には、display: table
という独自の表示プロパティがあります。 テーブルを親コンテナの全幅に移動させるために、width: 100%
をtable
セレクターに追加できます。
これは比較的小さなテーブルであるため、width
プロパティを<table>
要素に追加する必要はありません。 代わりに、テキストエディタでstyles.css
を開き、thead th
で構成されるコンビネータセレクタを追加します。これにより、<thead>
要素内の<th>
要素にスタイルのスコープが設定されます。 次に、次のコードブロックの強調表示された部分に示されているように、値が25%
のwidth
プロパティを追加します。
...
th, td {
border: 1px solid black;
}
thead th {
width: 25%;
}
このテーブルには4つの列があるため、width: 25%
を適用することで、各列に同じ幅を与えることができます。 各列の最初のセルのみを設定する必要があるため、thead th
セレクターを設定します。 1つのセルの幅によって、その列のすべてのセルの幅が決まります。
変更内容をstyles.css
に保存したら、ブラウザに戻ってindex.html
を更新してください。 次の画像に示すように、テーブルには同じ幅の4つの列があります。
注:列ごとに幅を変えたい場合は、列の各th
に特定のクラスを適用してください。 次に、それらのクラスを使用して、希望の幅を設定します。
列の幅が同じになったので、padding
プロパティを使用して、各セルのコンテンツで内部のスペースをさらに使用できます。 width
プロパティとは異なり、セル内にスペースを適用するには、すべてのth
およびtd
セル要素をターゲットにする必要があります。
テキストエディタでstyles.css
を開き、padding
プロパティをth, td
のグループセレクタに追加してから、8px
の値を指定します。 次のコードブロックで強調表示されている行は、必要な変更を示しています。
...
th, td {
border: 1px solid black;
padding: 8px;
}
thead th {
width: 25%;
}
変更内容をstyles.css
に保存し、ブラウザでindex.html
を更新してください。 8px
パディングが各セルの両側に追加され、表形式のデータを読みやすくするためのスペースが提供されます。 次の画像は、これがブラウザにどのように表示されるかを示しています。
注:テーブルセルのボックスモデルは通常のモデルからの外れ値であり、margin
プロパティを認識しません。
このセクションでは、各列のwidth
プロパティを等しく設定し、padding
プロパティを使用して各セルに間隔を追加して、データを読みやすくしました。 次のセクションでは、クラスを使用して特定のテーブルセルをターゲットにしてスタイルを設定します。
特定のテーブルセルをターゲットにする
このステップの目標は、テーブル内のセルの1つを視覚的に強調表示することです。 HTMLでクラス名を適用してから、クラスセレクターとbackground-color
プロパティを使用してハイライト効果を作成します。
まず、テキストエディタでindex.html
を開き、[X11X] 90%