- HTML Tutorial
- HTML Introduction
- HTML Editors
- HTML Basic
- HTML Comments
- HTML Elements
- HTML Attributes
- HTML Id & Classes
- HTML Skeletal Tags
- HTML Heading Tags
- HTML Paragraph Tag
- HTML Line Break Tag
- HTML Pre Tag
- HTML Anchor Tag
- HTML Image Tag
- HTML Horizontal Line Tag
- HTML Inline & Block
- HTML Inline
- HTML Block
- HTML LInks
- HTML Images
- HTML Formatting
- HTML Head
- HTML Head
- HTML Title
- HTML Meta Elements
- HTML Favicon
- HTML Style
- HTML List
- HTML Lists
- HTML Unordered List
- HTML Ordered List
- HTML Description List
- HTML Table
- HTML Tables
- HTML Table Headers
- HTML Table Styling
- HTML Table Colgroup
- HTML Form
- HTML Forms
- HTML Form Elements
- HTML Form Attributes
- HTML Input Types
- HTML Input Attributes
- HTML Form Actions
- HTML Semantic
- HTML Semantics
- HTML Graphics & Media
- HTML Canvas
- HTML SVG
- HTML Video & Audio
- HTML Plug-ins
- iFrames in HTML
- HTML Miscellaneous Tags
- HTML Code Tag
- HTML Entities
- HTML Quotation
- HTML Global Attributes
- HTML Obsolete Tags
- HTML Emojis
- HTML Symbols
- HTML Events
- HTML Colors
HTML Table Colgroup
The <colgroup> (column group) element is a powerful but often overlooked tool for managing table layouts. It allows you to define styles and behaviors for entire columns at once, rather than repeating the same classes or styles on every single <td> or <th> cell. This makes your HTML cleaner, easier to maintain, and more semantic.
<colgroup> as a way to define the "blueprint" of your table's horizontal structure before you even start adding data rows.
Basic Usage
To use it, place the <colgroup> tag immediately after the opening <table> tag. Inside, you define one or more <col> elements. Each <col> represents a column in the order they appear in your table rows.
<table>
<colgroup>
<col style="background-color: #f0f8ff;"> <!-- First Column -->
<col style="background-color: #f5f5dc;"> <!-- Second Column -->
<col style="background-color: #e6e6fa;"> <!-- Third Column -->
</colgroup>
<tr>
<th>ID</th>
<th>Product Name</th>
<th>Price</th>
</tr>
<tr>
<td>001</td>
<td>Mechanical Keyboard</td>
<td>$120.00</td>
</tr>
</table>
<col> element. Browsers generally only support width, background, border, and visibility. Properties like font-size or color usually won't work when applied to a <col>.
Applying Attributes to Columns
One of the most efficient ways to use <colgroup> is with the span attribute. This allows you to apply a single set of styles to multiple consecutive columns without writing a separate <col> tag for each one.
<table>
<colgroup>
<!-- This applies a light blue background to the first two columns -->
<col span="2" style="background-color: lightblue;">
<!-- This applies a light green background to the third column only -->
<col style="background-color: lightgreen;">
</colgroup>
<tr>
<td>Item SKU</td>
<td>Quantity</td>
<td>Status</td>
</tr>
<tr>
<td>BK-102</td>
<td>45</td>
<td>In Stock</td>
</tr>
</table>
<colgroup> (including spans) should ideally match the total number of columns in your table rows. If they don't match, the styles simply won't apply to the trailing columns.
Specifying Column Widths
Setting column widths within a <colgroup> is a best practice for performance. It tells the browser exactly how to allocate space before it starts rendering the content of the cells. This prevents the table from "jumping" or resizing as the text inside loads.
<table style="width: 100%; table-layout: fixed;">
<colgroup>
<col style="width: 100px;">
<col style="width: auto;">
<col style="width: 150px;">
</colgroup>
<tr>
<th>User ID</th>
<th>Biography</th>
<th>Last Login</th>
</tr>
<tr>
<td>4402</td>
<td>Software engineer from Seattle who loves building accessible web apps.</td>
<td>2024-05-12</td>
</tr>
</table>
table-layout: fixed; on your table when using specific widths in your colgroup. This forces the browser to follow your defined widths strictly, resulting in faster table rendering for large datasets.
Summary
The <colgroup> element is essential for professional web development when working with complex tables. It provides a centralized location to manage column styling and layout, ensuring your code remains DRY (Don't Repeat Yourself). By using the span attribute and defining widths early, you create tables that are both more performant and easier for other developers to read.
<colgroup> when building financial dashboards where the first column (Labels) needs a fixed width and a different background color than the following data columns.