CSS を使用すると、HTML テーブルの外観を大幅に改善できます。
| Company | Contact | Address | City |
|---|---|---|---|
| Alibaba | Ma Yun | No. 699, Wangshang Road, Binjiang District | Hangzhou |
| APPLE | Tim Cook | 1 Infinite Loop Cupertino, CA 95014 | Cupertino |
| BAIDU | Li YanHong | Lixiang guoji dasha,No 58, beisihuanxilu | Beijing |
| Canon | Tsuneji Uchida | One Canon Plaza Lake Success, NY 11042 | New York |
| Larry Page | 1600 Amphitheatre Parkway Mountain View, CA 94043 | Mountain View | |
| HUAWEI | Ren Zhengfei | Putian Huawei Base, Longgang District | Shenzhen |
| Microsoft | Bill Gates | 15700 NE 39th St Redmond, WA 98052 | Redmond |
| Nokia | Olli-Pekka Kallasvuo | P.O. Box 226, FIN-00045 Nokia Group | Helsinki |
| SONY | Kazuo Hirai | Park Ridge, NJ 07656 | Park Ridge |
| Tencent | Ma Huateng | Tencent Building, High-tech Park, Nanshan District | Shenzhen |
CSS で表の境界線を設定するには、border プロパティを使用します。
次の例では、<table>、<th>、および <td> 要素に黒い境界線を指定します。
| Firstname | Lastname |
|---|---|
| Bill | Gates |
| Steve | Jobs |
table, th, td {
border: 1px solid black;
}
注: 上の例の表には二重枠があります。 これは、table と <th> および <td> 要素に別々の境界線があるためです。
場合によっては、上の表が小さく見えるかもしれません。 画面全体 (全幅) をカバーする表が必要な場合は、<table> 要素に width: 100% を追加します。
table {
width: 100%;
}
上の表には二重枠があることに注意してください。 これは、table 要素と th、td 要素に別々の境界線があるためです。
二重枠を削除するには、以下の例を参照してください。
border-collapse 属性は、テーブルの境界線を単一の境界線に折りたたむかどうかを設定します。
| Firstname | Lastname |
|---|---|
| Bill | Gates |
| Steve | Jobs |
table {
border-collapse: collapse;
}
table, th, td {
border: 1px solid black;
}
テーブルの周囲に境界線だけが必要な場合は、<table> の border 属性を指定するだけです。
| Firstname | Lastname |
|---|---|
| Bill | Gates |
| Steve | Jobs |
table {
border: 1px solid black;
}
テーブルの幅と高さは、width 属性と height 属性によって定義されます。
次の例では、テーブルの幅を 100% に設定し、<th> 要素の高さを 50 ピクセルに設定します。
| Firstname | Lastname | Savings |
|---|---|---|
| Bill | Gates | $100 |
| Steve | Jobs | $150 |
| Elon | Musk | $300 |
table {
width: 100%;
}
th {
height: 50px;
}
ページの半分だけを占める表を作成するには、width: 50% を使用します。
table {
width: 50%;
}
th {
height: 70px;
}
text-align 属性は、<th> または <td> 内のコンテンツの水平方向の配置 (左、右、または中央) を設定します。
デフォルトでは、<th> 要素のコンテンツは中央揃えで、<td> 要素のコンテンツは左揃えです。
<td> 要素のコンテンツも中央揃えにするには、text-align: center: を使用します。
| Firstname | Lastname | Savings |
|---|---|---|
| Bill | Gates | $100 |
| Steve | Jobs | $150 |
| Elon | Musk | $300 |
th {
text-align: center;
}
次の例では、<th> 要素内のテキストを左揃えにしています。
| Firstname | Lastname | Savings |
|---|---|---|
| Bill | Gates | $100 |
| Steve | Jobs | $150 |
| Elon | Musk | $300 |
th {
text-align: left;
}
vertical-align 属性は、<th> または <td> 内のコンテンツの垂直方向の配置 (上、下、または中央) を設定します。
デフォルトでは、表内のコンテンツの垂直方向の配置は中央揃えになります (<th> 要素と <td> 要素の両方)。
次の例では、<td> 要素の垂直方向のテキスト配置を下に設定します。
| Firstname | Lastname | Savings |
|---|---|---|
| Bill | Gates | $100 |
| Steve | Jobs | $150 |
| Elon | Musk | $300 |
td {
height: 50px;
vertical-align: bottom;
}
境界線と表のコンテンツの間の間隔を制御するには、<td> 要素と <th> 要素の padding 属性を使用します。
| Firstname | Lastname | Savings |
|---|---|---|
| Bill | Gates | $100 |
| Steve | Jobs | $150 |
| Elon | Musk | $300 |
th, td {
padding: 15px;
text-align: left;
}
| Firstname | Lastname | Savings |
|---|---|---|
| Bill | Gates | $100 |
| Steve | Jobs | $150 |
| Elon | Musk | $300 |
水平分割線の border-bottom 属性を <th> と <td> に追加します。
th, td {
border-bottom: 1px solid #ddd;
}
<tr> 要素の :hover セレクターを使用して、ホバー時にテーブルの行を強調表示します。
| Firstname | Lastname | Savings |
|---|---|---|
| Bill | Gates | $100 |
| Steve | Jobs | $150 |
| Elon | Musk | $300 |
tr:hover {background-color: #f5f5f5;}
| Firstname | Lastname | Savings |
|---|---|---|
| Bill | Gates | $100 |
| Steve | Jobs | $150 |
| Elon | Musk | $300 |
ゼブラ テーブル効果を実現するには、nth-child() セレクターを使用し、テーブルのすべての偶数 (または奇数) 行に background-color を追加してください。 < /p>
tr:nth-child(even) {background-color: #f2f2f2;}
次の例では、<th> 要素の背景色とテキストの色を指定します。
| Firstname | Lastname | Savings |
|---|---|---|
| Bill | Gates | $100 |
| Steve | Jobs | $150 |
| Elon | Musk | $300 |
th {
background-color: #4CAF50;
color: white;
}
画面が小さすぎてコンテンツ全体を表示できない場合、レスポンシブ テーブルには水平スクロールバーが表示されます。
| First Name | Last Name | Points | Points | Points | Points | Points | Points | Points | Points | Points | Points |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Bill | Gates | 50 | 50 | 50 | 50 | 50 | 50 | 50 | 50 | 50 | 50 |
| Steve | Jobs | 94 | 94 | 94 | 94 | 94 | 94 | 94 | 94 | 94 | 94 |
| Elon | Musk | 67 | 67 | 67 | 67 | 67 | 67 | 67 | 67 | 67 | 67 |
レスポンシブ効果を得るには、overflow-x:auto を使用して <table> 要素の周囲にコンテナ要素 (例: <div>) を追加します。
<div style="overflow-x:auto;"> <table> ... table content ... </table> </div>
注: OS X Lion (Mac 上) では、スクロールバーはデフォルトで非表示になり、(「overflow :scroll」を使用した場合でも) 使用時のみ表示されます。
| 属性 | 説明 |
|---|---|
| border | 省略表現属性。 すべての境界線プロパティを 1 つのステートメントで設定します。 |
| border-collapse | は、テーブルの境界線を折りたたむかどうかを指定します。 |
| border-spacing | は、隣接するセル間の境界距離を指定します。 |
| caption-side | はテーブルのタイトルの位置を指定します。 |
| empty-cells | は、テーブル内の空のセルに境界線と背景を表示するかどうかを指定します。 |
| table-layout | テーブルに使用されるレイアウト アルゴリズムを設定します。 |