Module: HTML Forms and Tables

Tables and table elements

Tables and Table Elements

Tables are used to display data in a structured format using rows and columns. HTML provides several elements for creating and structuring tables.

1. <table> Element:

  • The fundamental element that defines an HTML table.
  • All other table-related elements must be descendants of <table>.
<table>
  <!-- Table content goes here -->
</table>

2. <tr> Element (Table Row):

  • Defines a row in the table.
  • Each <tr> element represents a horizontal row of data.
<tr>
  <!-- Table data cells go here -->
</tr>

3. <th> Element (Table Header):

  • Defines a header cell in the table.
  • Typically used for the first row (or rows) to label the columns.
  • By default, text within <th> elements is bold and centered.
<th>Header Text</th>

4. <td> Element (Table Data):

  • Defines a standard data cell in the table.
  • Contains the actual data to be displayed.
<td>Data Text</td>

Example: A Simple Table

<table>
  <tr>
    <th>Name</th>
    <th>Age</th>
    <th>City</th>
  </tr>
  <tr>
    <td>John Doe</td>
    <td>30</td>
    <td>New York</td>
  </tr>
  <tr>
    <td>Jane Smith</td>
    <td>25</td>
    <td>London</td>
  </tr>
</table>

5. <caption> Element (Table Caption):

  • Provides a caption or title for the table.
  • Should be the first child element of the <table> element.
<table>
  <caption>My Awesome Table</caption>
  <tr>
    <th>Header 1</th>
    <th>Header 2</th>
  </tr>
  <tr>
    <td>Data 1</td>
    <td>Data 2</td>
  </tr>
</table>

6. <thead>, <tbody>, <tfoot> Elements (Table Sections):

  • These elements are used to group table rows into logical sections:
    • <thead>: Defines the table header. Often contains <th> elements.
    • <tbody>: Defines the main body of the table. Contains <td> elements.
    • <tfoot>: Defines the table footer. Can contain summary information.
<table>
  <thead>
    <tr>
      <th>Header 1</th>
      <th>Header 2</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Data 1</td>
      <td>Data 2</td>
    </tr>
    <tr>
      <td>Data 3</td>
      <td>Data 4</td>
    </tr>
  </tbody>
  <tfoot>
    <tr>
      <td colspan="2">Total Records: 2</td>
    </tr>
  </tfoot>
</table>

7. colspan and rowspan Attributes:

  • colspan: Specifies how many columns a cell should span.
  • rowspan: Specifies how many rows a cell should span.
<table>
  <tr>
    <th colspan="2">Combined Header</th>
  </tr>
  <tr>
    <td>Data 1</td>
    <td>Data 2</td>
  </tr>
  <tr>
    <td rowspan="2">Combined Data</td>
    <td>Data 3</td>
  </tr>
  <tr>
    <td>Data 4</td>
  </tr>
</table>

8. border Attribute (Deprecated):

  • While still sometimes seen, the border attribute on the <table> element is deprecated in HTML5. Use CSS for styling borders instead.

CSS Styling for Tables:

CSS is the preferred method for styling tables. Common CSS properties include:

  • border: Sets the border around the table, cells, etc.
  • border-collapse: Controls whether table cell borders should collapse into a single border. Values: collapse, separate.
  • width: Sets the width of the table.
  • text-align: Aligns text within cells.
  • background-color: Sets the background color of the table or cells.
  • padding: Adds space around the content within cells.
  • font-family, font-size, font-weight: Control the font properties.

Example CSS:

table {
  border-collapse: collapse;
  width: 100%;
}

th, td {
  border: 1px solid black;
  padding: 8px;
  text-align: left;
}

th {
  background-color: #f2f2f2;
}

Accessibility Considerations:

  • Use <th> elements for headers to provide semantic meaning.
  • Provide a <caption> element for a clear table title.
  • Consider using the scope attribute on <th> elements to explicitly associate headers with data cells (e.g., scope="col" for column headers, scope="row" for row headers).
  • Ensure sufficient color contrast for readability.
  • For complex tables, consider using ARIA attributes to improve accessibility for screen readers.