HTML Tables: Guide to Creating, Styling, and Manipulating Tables

HTML Tables: Guide to Creating, Styling, and Manipulating Tables

·

5 min read

HTML tables are a fundamental aspect of web development, allowing you to display data in a structured and organized manner. Although their use has diminished with the advent of modern layout techniques such as CSS Grid and Flexbox, HTML tables remain relevant for presenting tabular data, such as spreadsheets or schedules. In this comprehensive guide, we'll explore the basics of creating, styling, and manipulating HTML tables to help you enhance your web design and development skills.

html

Basics of HTML Tables

  1. HTML Table Elements

To create an HTML table, you'll need to use a combination of the following elements:

  • <table>: This element defines the table and acts as a container for all other table elements.

  • <thead>: The table head element is used to group the header content in an HTML table. It usually contains a row of table headings.

  • <tbody>: This element is used to group the main content of an HTML table. It typically contains one or more rows of table data.

  • <tfoot>: The table foot element is used to group the footer content in an HTML table. It is typically used to display summary information, such as totals or averages.

  • <tr>: This element defines a row in an HTML table. Each row can contain one or more table cells.

  • <th>: The table heading element is used to define a header cell in an HTML table. It is typically used to provide labels for columns or rows.

  • <td>: This element defines a standard table cell in an HTML table. It is used to display data.

2. Creating a Basic HTML Table

To create a basic HTML table, you'll need to use the elements described above in a nested structure. Here's an example of a simple HTML table:

<table>
  <thead>
    <tr>
      <th>Header 1</th>
      <th>Header 2</th>
      <th>Header 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>
  <tfoot>
    <tr>
      <td>Footer 1</td>
      <td>Footer 2</td>
      <td>Footer 3</td>
    </tr>
  </tfoot>
</table>

This example demonstrates a basic HTML table with a header row, two data rows, and a footer row. Each row contains three cells.

css

Styling HTML Tables with CSS

1. Adding Borders

By default, table in HTML do not have borders. To add borders to your table, you can use the following CSS:

table {
  border-collapse: collapse;
  width: 100%;
}
th, td {
  border: 1px solid black;
  padding: 8px;
  text-align: left;
}

The border-collapse: collapse property ensures that the borders between cells are combined into a single border. The width: 100% property sets the table to occupy the full width of its container.

To differentiate the header and footer rows from the main content, you can apply custom styles. For example, you can change the background color and text color of the header and footer cells:

thead th, tfoot td {
  background-color: #f2f2f2;
  color: #333;
}

3. Alternating Row Colors

To improve the readability of your HTML table, you can apply alternating row colors using the :nth-child selector:

tbody tr:nth-child(even) {
  background-color: #f2f2f2;
}

4. Adding Hover Effects

Adding a hover effect to table rows can further enhance the user experience. To do this, use the :hover selector:

tbody tr:hover {
  background-color: #ddd;
}

5. Adjusting Column Widths

You can adjust the width of table columns by applying a width property to the th or td elements:

th:first-child, td:first-child {
  width: 30%;
}

Manipulating HTML Tables with JavaScript

1. Adding Rows Dynamically

To add rows to an HTML table dynamically, you can use JavaScript to create and append new tr and td elements:

function addRow() {
  var table = document.getElementById("myTable");
  var row = table.insertRow(-1);
  var cell1 = row.insertCell(0);
  var cell2 = row.insertCell(1);
  var cell3 = row.insertCell(2);

  cell1.innerHTML = "New Row, Cell 1";
  cell2.innerHTML = "New Row, Cell 2";
  cell3.innerHTML = "New Row, Cell 3";
}

2. Deleting Rows Dynamically

To delete rows from an HTML table dynamically, you can use JavaScript to remove the desired tr element:

function deleteRow(index) {
  var table = document.getElementById("myTable");
  table.deleteRow(index);
}

3. Sorting Table Data

You can use JavaScript to sort table data by column. Here's an example of a simple sorting function:

function sortTable(columnIndex) {
  var table = document.getElementById("myTable");
  var rows = Array.from(table.rows).slice(1); // Convert rows to an array and exclude the header row

  rows.sort(function(a, b) {
    var aValue = a.cells[columnIndex].innerText;
    var bValue = b.cells[columnIndex].innerText;

    if (aValue < bValue) {
      return -1;
    } else if (aValue > bValue) {
      return 1;
    } else {
      return 0;
    }
  });

  // Append sorted rows to the table
  for (var i = 0; i < rows.length; i++) {
    table.appendChild(rows[i]);
  }
}

HTML Table Accessibility

Ensuring that your tables in HTML are accessible to all users, including those with disabilities, is essential. Here are some tips for improving table accessibility:

1. Use Table Captions

Table captions provide a brief description of the table contents. To add a caption, use the <caption> element:

<table>
  <caption>Example table caption</caption>
  ...
</table>

2. Use scope Attribute

The scope attribute helps assistive technologies understand the structure of your table by indicating whether a header cell applies to a column, row, or both:

<th scope="col">Header 1</th>
<th scope="row">Row Header</th>

Conclusion

HTML tables remain an essential tool for web developers, despite the rise of modern layout techniques like CSS Grid and Flexbox. Mastering the creation, styling, and manipulation of HTML tables is vital for presenting tabular data effectively and ensuring a good user experience. By applying the best practices outlined in this guide, you can create accessible, responsive, and user-friendly HTML tables for your web projects. If you're looking for professional assistance with your HTML development needs, consider partnering with CronJ, a team of expert HTML developers who can help you create high-quality, visually appealing, and accessible web applications.

html table

References

  1. MDN Web Docs - HTML table basics: developer.mozilla.org/en-US/docs/Learn/HTML..

  2. https://hardyian.hashnode.dev/importance-of-user-experience-in-app-development

  3. HTML Table

  4. Links in HTML

  5. Learn HTML