Bootstrap - Tables
Basic Table
To create a basic table in Bootstrap, use the .table
class on the <table>
element. This class applies styling to the table, such as padding, background color, and borders.
Example: Basic Bootstrap Table
<table class="table">
<thead>
<tr>
<th>Column 1</th>
<th>Column 2</th>
<th>Column 3</th>
</tr>
</thead>
<tbody>
<tr>
<td>Row 1, Cell 1</td>
<td>Row 1, Cell 2</td>
<td>Row 1, Cell 3</td>
</tr>
<tr>
<td>Row 2, Cell 1</td>
<td>Row 2, Cell 2</td>
<td>Row 2, Cell 3</td>
</tr>
</tbody>
</table>
A <table>
element with the .table
class applied to it. Inside the table, there is a <thead>
element for the header, with a row (<tr>
) and three header cells (<th>
) for the column names.
The <tbody>
element represents the table body and contains the data rows. Each row is defined by a <tr>
element, and each cell within a row is represented by a <td>
element.
Bootstrap provides classes to style the table:
Class | Description |
---|---|
.table-bordered |
Adds borders to all sides of the table and cells |
.table-borderless |
Removes borders from the table |
.table-striped |
Adds zebra-striping to the table rows |
.table-hover |
Enables a hover effect on table rows |
.table-sm |
Makes the table more compact by cutting cell padding in half |
You can apply these classes with the .table
class to customize the look of your table.
Example: Custom Bootstrap Table
<table class="table table-bordered table-striped">
...
</table>
This will create a table with borders and zebra-striping. Include the Bootstrap CSS file in your project to use these classes and styles.
By using Bootstrap's table classes, you can create clean and formatted tables that are consistent with your Bootstrap-based website or application.
Striped Rows
To add striped rows to a Bootstrap table, use the .table-striped
class along with the .table
class on the <table>
element. This will apply alternating background colors to the rows, making it easier to read and follow the data.
Example: Bootstrap Table with Striped Rows
<table class="table table-striped">
<thead>
<tr>
<th>Column 1</th>
<th>Column 2</th>
<th>Column 3</th>
</tr>
</thead>
<tbody>
<tr>
<td>Row 1, Cell 1</td>
<td>Row 1, Cell 2</td>
<td>Row 1, Cell 3</td>
</tr>
<tr>
<td>Row 2, Cell 1</td>
<td>Row 2, Cell 2</td>
<td>Row 2, Cell 3</td>
</tr>
<tr>
<td>Row 3, Cell 1</td>
<td>Row 3, Cell 2</td>
<td>Row 3, Cell 3</td>
</tr>
</tbody>
</table>
The .table-striped
class is added to the <table>
element along with the .table
class. This applies the striped row styling to the table.
The .table-striped
class uses the :nth-child
CSS selector to apply different background colors to odd and even rows. By default, the odd rows have a light gray background color, while the even rows have a white background color.
Striped rows help to visually separate the data and make it simpler to read, especially when dealing with large tables with many rows. The alternating background colors guide the user's eyes and make it easier to follow the data horizontally across the row.
Keep in mind that the .table-striped
class only works with <tr>
elements within the <tbody>
element. If you have a <thead>
or <tfoot>
element in your table, the striped styling will not be applied to the rows within those sections.
Bordered Table
To create a bordered table in Bootstrap, use the .table-bordered
class with the .table
class on the <table>
element. This will add borders to all sides of the table and cells, making it clear and easy to see different rows and columns.
Example: Creating a Bordered Table in Bootstrap
<table class="table table-bordered">
<thead>
<tr>
<th>Column 1</th>
<th>Column 2</th>
<th>Column 3</th>
</tr>
</thead>
<tbody>
<tr>
<td>Row 1, Cell 1</td>
<td>Row 1, Cell 2</td>
<td>Row 1, Cell 3</td>
</tr>
<tr>
<td>Row 2, Cell 1</td>
<td>Row 2, Cell 2</td>
<td>Row 2, Cell 3</td>
</tr>
<tr>
<td>Row 3, Cell 1</td>
<td>Row 3, Cell 2</td>
<td>Row 3, Cell 3</td>
</tr>
</tbody>
</table>
The .table-bordered
class is added to the <table>
element with the .table
class. This puts borders on all sides of the table and cells.
The borders are made using the border
CSS property, which is set to a thin, solid line with a default color. The border is put on the table itself and each cell within the table.
Using bordered tables can help to visually separate the data and make it easier to see the structure of the table. It is very useful when you have complex tables with many rows and columns, as the borders help to define the boundaries between cells.
You can combine the .table-bordered
class with other Bootstrap table classes to change the look of your table.
Example: Combining .table-bordered and .table-striped
<table class="table table-bordered table-striped">
...
</table>
This will create a table with borders and striped rows, combining the visual changes of both classes.
Hover Rows
To add a hover effect to table rows in Bootstrap, use the .table-hover
class with the .table
class on the <table>
element. This will add a background color to the table rows when hovered over, making it easier to highlight specific rows of data.
Example: HTML table code with hover effect
<table class="table table-hover">
<thead>
<tr>
<th>Column 1</th>
<th>Column 2</th>
<th>Column 3</th>
</tr>
</thead>
<tbody>
<tr>
<td>Row 1, Cell 1</td>
<td>Row 1, Cell 2</td>
<td>Row 1, Cell 3</td>
</tr>
<tr>
<td>Row 2, Cell 1</td>
<td>Row 2, Cell 2</td>
<td>Row 2, Cell 3</td>
</tr>
<tr>
<td>Row 3, Cell 1</td>
<td>Row 3, Cell 2</td>
<td>Row 3, Cell 3</td>
</tr>
</tbody>
</table>
The .table-hover
class is added to the <table>
element along with the .table
class. This enables the hover effect on the table rows.
When a user hovers over a row within the <tbody>
element, the .table-hover
class adds a background color to that specific row. By default, the hover background color is a light gray.
The hover effect helps to highlight the row being used, making it easier for users to focus on specific data points. It provides visual feedback and improves the table's interactivity.
You can combine the .table-hover
class with other Bootstrap table classes to further change the look of your table.
Example: HTML table code with hover, striped rows, and borders
<table class="table table-hover table-striped table-bordered">
...
</table>
This will create a table with a hover effect, striped rows, and borders, providing a visually appealing and interactive experience for users.
The .table-hover
class is useful when you have tables with many rows of data, as it helps users quickly find the row they are interested in. It improves the readability and usability of the table, especially in scenarios where users need to scan through large amounts of tabular data.
Condensed Table
To make a table more compact and reduce the cell padding, you can use the .table-sm
class with the .table
class on the <table>
element. This class makes the table more condensed by cutting the cell padding in half, allowing more data to fit within a smaller space.
Example: Compact Table HTML
<table class="table table-sm">
<thead>
<tr>
<th>Column 1</th>
<th>Column 2</th>
<th>Column 3</th>
</tr>
</thead>
<tbody>
<tr>
<td>Row 1, Cell 1</td>
<td>Row 1, Cell 2</td>
<td>Row 1, Cell 3</td>
</tr>
<tr>
<td>Row 2, Cell 1</td>
<td>Row 2, Cell 2</td>
<td>Row 2, Cell 3</td>
</tr>
<tr>
<td>Row 3, Cell 1</td>
<td>Row 3, Cell 2</td>
<td>Row 3, Cell 3</td>
</tr>
</tbody>
</table>
By adding the .table-sm
class to the <table>
element with the .table
class, the table becomes more compact. The .table-sm
class reduces the cell padding by 50%, making the table rows and cells closer together.
This is useful when you have limited space and need to fit more data within a smaller area. It lets you show more rows of data without the table taking up too much vertical space.
However, it's important to note that reducing the cell padding may impact the readability of the table, especially if the cell content is long or complex. Make sure to consider the balance between compactness and readability when using the .table-sm
class.
You can combine the .table-sm
class with other Bootstrap table classes to further customize the look of your table.
Example: Combined Table Classes HTML
<table class="table table-sm table-striped table-hover">
...
</table>
This creates a compact table with striped rows and a hover effect, providing a visually appealing and space-efficient way to present tabular data.
The .table-sm
class is particularly handy when working with dashboards, data-heavy applications, or responsive designs where space is limited. It lets you pack more information into a smaller area without sacrificing the table's functionality.
Contextual Classes
Bootstrap provides contextual classes that allow you to add colors to table rows or cells, providing visual meaning or highlighting important information. These classes are useful for drawing attention to specific data points or indicating the status or category of a row or cell.
To apply contextual colors to table rows or cells, you can use the following classes:
Class | Description |
---|---|
.table-primary |
Applies a blue background color to the row or cell. |
.table-secondary |
Applies a gray background color to the row or cell. |
.table-success |
Applies a green background color to the row or cell, indicating a successful or positive status. |
.table-danger |
Applies a red background color to the row or cell, indicating an error or negative status. |
.table-warning |
Applies a yellow background color to the row or cell, indicating a warning or cautionary status. |
.table-info |
Applies a light blue background color to the row or cell, indicating an informational status. |
.table-light |
Applies a light gray background color to the row or cell. |
.table-dark |
Applies a dark gray background color to the row or cell. |
To apply these classes to a table row, add the desired class to the <tr>
element.
Example: Applying Contextual Classes to Table Rows
<table class="table">
<thead>
<tr>
<th>Column 1</th>
<th>Column 2</th>
<th>Column 3</th>
</tr>
</thead>
<tbody>
<tr class="table-primary">
<td>Row 1, Cell 1</td>
<td>Row 1, Cell 2</td>
<td>Row 1, Cell 3</td>
</tr>
<tr class="table-success">
<td>Row 2, Cell 1</td>
<td>Row 2, Cell 2</td>
<td>Row 2, Cell 3</td>
</tr>
<tr class="table-danger">
<td>Row 3, Cell 1</td>
<td>Row 3, Cell 2</td>
<td>Row 3, Cell 3</td>
</tr>
</tbody>
</table>
To apply contextual classes to individual cells, add the desired class to the <td>
or <th>
element.
Example: Applying Contextual Classes to Individual Table Cells
<table class="table">
<thead>
<tr>
<th>Column 1</th>
<th>Column 2</th>
<th>Column 3</th>
</tr>
</thead>
<tbody>
<tr>
<td class="table-primary">Cell 1</td>
<td>Cell 2</td>
<td>Cell 3</td>
</tr>
<tr>
<td>Cell 4</td>
<td class="table-success">Cell 5</td>
<td>Cell 6</td>
</tr>
<tr>
<td>Cell 7</td>
<td>Cell 8</td>
<td class="table-danger">Cell 9</td>
</tr>
</tbody>
</table>
Using contextual classes in tables helps to convey meaning, categorize data, or draw attention to important information. They provide visual cues to users, making it easier to understand and interpret the data presented in the table.
Responsive Tables
Bootstrap lets you make tables responsive, allowing them to adapt to different screen sizes and devices. By using the .table-responsive
class, you can create tables that are horizontally scrollable when the content is too wide.
To make a table responsive, wrap the <table>
element inside a <div>
element with the .table-responsive
class.
Example: Basic responsive table
<div class="table-responsive">
<table class="table">
<thead>
<tr>
<th>Column 1</th>
<th>Column 2</th>
<th>Column 3</th>
<th>Column 4</th>
<th>Column 5</th>
</tr>
</thead>
<tbody>
<tr>
<td>Row 1, Cell 1</td>
<td>Row 1, Cell 2</td>
<td>Row 1, Cell 3</td>
<td>Row 1, Cell 4</td>
<td>Row 1, Cell 5</td>
</tr>
<tr>
<td>Row 2, Cell 1</td>
<td>Row 2, Cell 2</td>
<td>Row 2, Cell 3</td>
<td>Row 2, Cell 4</td>
<td>Row 2, Cell 5</td>
</tr>
</tbody>
</table>
</div>
By wrapping the <table>
element inside a <div>
with the .table-responsive
class, the table becomes responsive. When the content of the table is too wide to fit within the available space, a horizontal scrollbar will appear, allowing users to scroll horizontally to view the remaining columns.
Bootstrap provides extra classes to control the responsiveness of tables at specific breakpoints:
Class | Description |
---|---|
.table-responsive-sm |
Makes the table responsive on screens smaller than 576px. |
.table-responsive-md |
Makes the table responsive on screens smaller than 768px. |
.table-responsive-lg |
Makes the table responsive on screens smaller than 992px. |
.table-responsive-xl |
Makes the table responsive on screens smaller than 1200px. |
By using these classes, you can specify at which screen sizes the table should become responsive and display a horizontal scrollbar.
Example: Responsive table for screens smaller than 768px
<div class="table-responsive-md">
<table class="table">
...
</table>
</div>
In this example, the table will become responsive on screens smaller than 768px (medium size).
Responsive tables are useful when dealing with large amounts of tabular data that may not fit within the available screen width, especially on smaller devices like mobile phones. By making the table responsive, users can easily scroll horizontally to access all the columns without breaking the layout or requiring zooming.
It's important to note that responsive tables should be used carefully, as too much horizontal scrolling can hinder the user experience. Consider the content and design of your table carefully and use responsive tables when necessary to provide a better viewing experience across different devices.
Table Head
In Bootstrap tables, you can style the table header using the <thead>
element and the corresponding .thead-dark
or .thead-light
classes. These classes let you apply different styles to the table header, making it stand out from the table body.
To style the table header, wrap the header row (<tr>
) inside a <thead>
element.
Example: Basic Table Header Styling
<table class="table">
<thead>
<tr>
<th>Column 1</th>
<th>Column 2</th>
<th>Column 3</th>
</tr>
</thead>
<tbody>
<tr>
<td>Row 1, Cell 1</td>
<td>Row 1, Cell 2</td>
<td>Row 1, Cell 3</td>
</tr>
<tr>
<td>Row 2, Cell 1</td>
<td>Row 2, Cell 2</td>
<td>Row 2, Cell 3</td>
</tr>
</tbody>
</table>
By default, the <thead>
element has no special styling. However, Bootstrap provides two classes to style the table header:
.thead-dark
: Applies a dark background color and white text color to the table header.
Example: Dark Themed Table Header
<table class="table">
<thead class="thead-dark">
<tr>
<th>Column 1</th>
<th>Column 2</th>
<th>Column 3</th>
</tr>
</thead>
<tbody>
...
</tbody>
</table>
.thead-light
: Applies a light gray background color and dark text color to the table header.
Example: Light Themed Table Header
<table class="table">
<thead class="thead-light">
<tr>
<th>Column 1</th>
<th>Column 2</th>
<th>Column 3</th>
</tr>
</thead>
<tbody>
...
</tbody>
</table>
Using the .thead-dark
or .thead-light
classes, you can visually separate the table header from the table body, making it easier for users to read and understand the table structure. The contrasting colors help to differentiate the header from the rest of the table content.
You can combine the table header classes with other Bootstrap table classes to further customize the look of your table.
Example: Dark Themed Table Header with Striped Rows
<table class="table table-striped">
<thead class="thead-dark">
<tr>
<th>Column 1</th>
<th>Column 2</th>
<th>Column 3</th>
</tr>
</thead>
<tbody>
...
</tbody>
</table>
This creates a table with a dark header and striped rows in the table body, providing a visually appealing and structured presentation of the data.
Styling the table header using the <thead>
element and the .thead-dark
or .thead-light
classes helps to improve the readability and organization of your table. It provides a clear separation between the header and the table body, making it easier for users to understand the structure and purpose of each column.
Customizing Tables
Bootstrap provides default styles for tables, but you can customize the table appearance by overriding these styles or using custom CSS classes. This lets you match the table design to your needs or the style of your website.
To override the default styles of a Bootstrap table, you can use CSS to target the table elements and apply your own styles.
Example: Custom Table Styles
<style>
.table-custom {
background-color: #f8f9fa;
color: #333;
font-size: 14px;
border: 1px solid #dee2e6;
}
.table-custom th {
background-color: #e9ecef;
color: #495057;
font-weight: bold;
text-transform: uppercase;
}
.table-custom td {
border-top: 1px solid #dee2e6;
padding: 12px;
}
</style>
<table class="table table-custom">
<thead>
<tr>
<th>Column 1</th>
<th>Column 2</th>
<th>Column 3</th>
</tr>
</thead>
<tbody>
<tr>
<td>Row 1, Cell 1</td>
<td>Row 1, Cell 2</td>
<td>Row 1, Cell 3</td>
</tr>
<tr>
<td>Row 2, Cell 1</td>
<td>Row 2, Cell 2</td>
<td>Row 2, Cell 3</td>
</tr>
</tbody>
</table>
A custom CSS class .table-custom
is defined with styles for the table background color, text color, font size, and border. The table header (<th>
) and table cells (<td>
) are also styled to apply different background colors, font weights, and padding.
By applying the .table-custom
class to the <table>
element along with the .table
class, the custom styles override the default Bootstrap table styles.
Another way to customize tables is by using custom CSS classes with Bootstrap's utility classes. Bootstrap provides utility classes that you can use to change the table appearance.
Example: Using Bootstrap’s Utility Classes
<table class="table bg-light text-dark">
<thead>
<tr class="bg-primary text-white">
<th>Column 1</th>
<th>Column 2</th>
<th>Column 3</th>
</tr>
</thead>
<tbody>
<tr>
<td class="font-weight-bold">Row 1, Cell 1</td>
<td>Row 1, Cell 2</td>
<td class="text-success">Row 1, Cell 3</td>
</tr>
<tr>
<td>Row 2, Cell 1</td>
<td class="font-italic">Row 2, Cell 2</td>
<td class="text-danger">Row 2, Cell 3</td>
</tr>
</tbody>
</table>
Bootstrap's utility classes are used to change the table's appearance:
- The
.bg-light
and.text-dark
classes are applied to the<table>
element to set a light background color and dark text color for the table. - The
.bg-primary
and.text-white
classes are applied to the table header row (<tr>
) to set a primary background color and white text color for the header. - The
.font-weight-bold
,.text-success
,.font-italic
, and.text-danger
classes are applied to table cells (<td>
) to change the font weight, text color, and font style for specific cells.
Using Bootstrap's utility classes, you can quickly customize the table appearance without writing separate CSS rules.
When customizing tables, consider these best practices:
Best Practice | Description |
---|---|
Consistency | Use similar styles, colors, and formats to keep a consistent design in your tables. |
Readability | Use proper font sizes, colors, and spacing to make the table content easy to read. |
Responsiveness | Make sure your custom tables are responsive and work well on different screen sizes. |
Accessibility | Consider accessibility when customizing tables, such as using good color contrast and proper table structure. |
Customizing tables allows you to create unique and appealing designs that match your website's style. By overriding default styles and using custom CSS classes, you can make your tables stand out and improve the user experience.
Test your custom tables on different devices and browsers to make sure they look and work as intended. Pay attention to the readability and accessibility of your tables, especially when applying custom styles.