The look of an HTML table can be greatly improved with CSS:
Company | Contact | Country |
---|---|---|
Alfreds Futterkiste | Maria Anders | Germany |
Berglunds snabbköp | Christina Berglund | Sweden |
Centro comercial Moctezuma | Francisco Chang | Mexico |
Ernst Handel | Roland Mendel | Austria |
Island Trading | Helen Bennett | UK |
Königlich Essen | Philip Cramer | Germany |
Laughing Bacchus Winecellars | Yoshi Tannamuri | Canada |
Magazzini Alimentari Riuniti | Giovanni Rovelli | Italy |
Table Borders
To specify table borders in CSS, use the border
property.
The example below specifies a black border for
,
, and
elements:
Firstname | Lastname |
---|---|
Peter | Griffin |
Lois | Griffin |
Example
table, th, td { border: 1px solid black; }
Notice that the table in the example above has double borders. This is because both the table and the <th> and <td> elements have separate borders.
Collapse Table Borders
The border-collapse
property sets whether the table borders should be collapsed into a single border:
Firstname | Lastname |
---|---|
Peter | Griffin |
Lois | Griffin |
Example
table { border-collapse: collapse; } table, th, td { border: 1px solid black; }
If you only want a border around the table, only specify the border
property for
:
Firstname | Lastname |
---|---|
Peter | Griffin |
Lois | Griffin |
Example
table { border: 1px solid black; }
Table Width and Height
Width and height of a table are defined by the width
and height
properties.
The example below sets the width of the table to 100%, and the height of the
elements to 50px:
Firstname | Lastname | Savings |
---|---|---|
Peter | Griffin | $100 |
Lois | Griffin | $150 |
Joe | Swanson | $300 |
Example
table { width: 100%; } th { height: 50px; }
Horizontal Alignment
The text-align
property sets the horizontal alignment (like left, right, or center) of the content in
or
.
By default, the content of
elements are center-aligned and the content of
elements are left-aligned.
The following example left-aligns the text in
elements:
Firstname | Lastname | Savings |
---|---|---|
Peter | Griffin | $100 |
Lois | Griffin | $150 |
Joe | Swanson | $300 |
Example
th { text-align: left; }
Vertical Alignment
The vertical-align
property sets the vertical alignment (like top, bottom, or middle) of the content in
or
.
By default, the vertical alignment of the content in a table is middle (for both
and
elements).
The following example sets the vertical text alignment to bottom for
elements:
Firstname | Lastname | Savings |
---|---|---|
Peter | Griffin | $100 |
Lois | Griffin | $150 |
Joe | Swanson | $300 |
Example
td { height: 50px; vertical-align: bottom; }
Table Padding
To control the space between the border and the content in a table, use the padding
property on
and
elements:
Firstname | Lastname | Savings |
---|---|---|
Peter | Griffin | $100 |
Lois | Griffin | $150 |
Joe | Swanson | $300 |
Example
th, td { padding: 15px; text-align: left; }
Horizontal Dividers
First Name | Last Name | Savings |
---|---|---|
Peter | Griffin | $100 |
Lois | Griffin | $150 |
Joe | Swanson | $300 |
Add the border-bottom
property to <th> and <td> for horizontal dividers:
Example
th, td { border-bottom: 1px solid #ddd; }
Hoverable Table
Use the :hover
selector on <tr> to highlight table rows on mouse over:
First Name | Last Name | Savings |
---|---|---|
Peter | Griffin | $100 |
Lois | Griffin | $150 |
Joe | Swanson | $300 |
Example
tr:hover {background-color: #f5f5f5;}
Striped Tables
First Name | Last Name | Savings |
---|---|---|
Peter | Griffin | $100 |
Lois | Griffin | $150 |
Joe | Swanson | $300 |
For zebra-striped tables, use the nth-child()
selector and add a background-color
to all even (or odd) table rows:
Example
<pre>tr:nth-child(even) {background-color: #f2f2f2;}</pre>
Table Color
The example below specifies the background color and text color of <th> elements:
First Name | Last Name | Savings |
---|---|---|
Peter | Griffin | $100 |
Lois | Griffin | $150 |
Joe | Swanson | $300 |
Example
th { background-color: #4CAF50; color: white; }
Responsive Table
A responsive table will display a horizontal scroll bar if the screen is too small to display the full content:
First Name | Last Name | Points | Points | Points | Points | Points | Points | Points | Points | Points | Points | Points | Points |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Jill | Smith | 50 | 50 | 50 | 50 | 50 | 50 | 50 | 50 | 50 | 50 | 50 | 50 |
Eve | Jackson | 94 | 94 | 94 | 94 | 94 | 94 | 94 | 94 | 94 | 94 | 94 | 94 |
Adam | Johnson | 67 | 67 | 67 | 67 | 67 | 67 | 67 | 67 | 67 | 67 | 67 | 67 |
Add a container element (like <div>) with overflow-x:auto
around the <table> element to make it responsive:
Leave A Comment