HTML tables are used to display tabular data in rows and columns. They are created using the <table> tag, along with supporting tags like <tr>, <th>, and <td>. This tutorial will cover everything from basic table creation to advanced formatting.
1. Basic Table Structure
A basic HTML table consists of:
- <table>: The container for the table.
- <tr>: Table row.
- <th>: Table header cell.
- <td>: Table data cell.
Example 1: Basic Table
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Basic Table</title> </head> <body> <h1>Basic Table Example</h1> <table border="1"> <tr> <th>Name</th> <th>Age</th> <th>Country</th> </tr> <tr> <td>John</td> <td>25</td> <td>USA</td> </tr> <tr> <td>Maria</td> <td>30</td> <td>Canada</td> </tr> <tr> <td>Lee</td> <td>28</td> <td>South Korea</td> </tr> </table> </body> </html>
Explanation:
- <th>: Creates header cells with bold and centered text by default.
- <td>: Creates regular data cells.
- border=”1″: Adds a simple border around the table (use CSS for modern styling).
2. Adding a Caption
You can add a caption to describe your table using the <caption> tag.
Example 2: Table with Caption
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Table Caption</title> </head> <body> <h1>Table with Caption</h1> <table border="1"> <caption>Student Information</caption> <tr> <th>Name</th> <th>Age</th> <th>Grade</th> </tr> <tr> <td>Alice</td> <td>20</td> <td>A</td> </tr> <tr> <td>Bob</td> <td>22</td> <td>B</td> </tr> </table> </body> </html>
Output: The caption “Student Information” appears above the table.
3. Table Borders and Cell Padding
Use the border-collapse and padding properties in CSS to style borders and add space inside cells.
Example 3: Styled Table with CSS
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Styled Table</title> <style> table { border-collapse: collapse; width: 50%; margin: auto; } th, td { border: 1px solid black; padding: 10px; text-align: center; } th { background-color: lightblue; } tr:nth-child(even) { background-color: #f2f2f2; } </style> </head> <body> <h1>Styled Table Example</h1> <table> <tr> <th>Product</th> <th>Price</th> <th>Quantity</th> </tr> <tr> <td>Apples</td> <td>$2.00</td> <td>50</td> </tr> <tr> <td>Bananas</td> <td>$1.50</td> <td>100</td> </tr> <tr> <td>Cherries</td> <td>$3.00</td> <td>30</td> </tr> </table> </body> </html>
Explanation:
- border-collapse: collapse;: Combines adjacent borders into a single border.
- padding: Adds space inside table cells.
- tr:nth-child(even): Highlights alternate rows for better readability.
4. Spanning Columns and Rows
You can merge cells across rows or columns using the colspan and rowspan attributes.
Example 4: Spanning Columns and Rows
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Spanning Cells</title> </head> <body> <h1>Table with Colspan and Rowspan</h1> <table border="1"> <tr> <th>Name</th> <th colspan="2">Contact Info</th> </tr> <tr> <td>John</td> <td>Email</td> <td>john@example.com</td> </tr> <tr> <td>Maria</td> <td rowspan="2">Phone</td> <td>+123456789</td> </tr> <tr> <td>Lee</td> <td>+987654321</td> </tr> </table> </body> </html>
Explanation:
- colspan=”2″: Merges two columns into one.
- rowspan=”2″: Merges two rows into one.
5. Adding a Header, Body, and Footer
HTML tables can be divided into sections using <thead>, <tbody>, and <tfoot> tags for better organization.
Example 5: Table with Header, Body, and Footer
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Table Sections</title> </head> <body> <h1>Table with Sections</h1> <table border="1"> <thead> <tr> <th>Item</th> <th>Price</th> <th>Quantity</th> </tr> </thead> <tbody> <tr> <td>Milk</td> <td>$2.50</td> <td>10</td> </tr> <tr> <td>Bread</td> <td>$1.50</td> <td>20</td> </tr> </tbody> <tfoot> <tr> <td colspan="2">Total</td> <td>30</td> </tr> </tfoot> </table> </body> </html>
Output:
- <thead> contains the table headers.
- <tbody> contains the main data.
- <tfoot> contains the summary or footer row.
6. Responsive Tables
For responsive designs, you can make tables scrollable on smaller screens using CSS.
Example 6: Responsive Table
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Responsive Table</title> <style> table { border-collapse: collapse; width: 100%; } th, td { border: 1px solid black; padding: 8px; text-align: left; } .table-container { overflow-x: auto; } </style> </head> <body> <h1>Responsive Table</h1> <div class="table-container"> <table> <thead> <tr> <th>Item</th> <th>Description</th> <th>Price</th> </tr> </thead> <tbody> <tr> <td>Phone</td> <td>Smartphone with 6GB RAM</td> <td>$500</td> </tr> <tr> <td>Laptop</td> <td>15-inch display, 8GB RAM</td> <td>$800</td> </tr> </tbody> </table> </div> </body> </html>
Explanation:
- The .table-container div allows horizontal scrolling on small screens.
Conclusion
In this tutorial, you learned how to:
- Create a basic HTML table.
- Use captions, borders, and padding.
- Merge cells with colspan and rowspan.
- Add sections with <thead>, <tbody>, and <tfoot>.
- Style tables for better readability.
- Make tables responsive for modern web designs.
With these examples, you can now create well-structured and visually appealing tables for your web pages