Change column width bootstrap tables
Categories:
Mastering Column Width in Bootstrap Tables

Learn various techniques to effectively control and customize column widths in Bootstrap tables, from basic CSS to responsive design considerations.
Bootstrap provides a robust framework for creating responsive and aesthetically pleasing tables. However, controlling individual column widths can sometimes be a challenge, especially when dealing with dynamic content or specific layout requirements. This article explores several methods to precisely adjust column widths in Bootstrap tables, ensuring your data is presented clearly and effectively across different screen sizes.
Understanding Bootstrap's Table Layout
Before diving into specific techniques, it's crucial to understand how Bootstrap tables render by default. Bootstrap tables use table-layout: fixed;
when the .table-responsive
class is applied to a parent container, or table-layout: auto;
otherwise. The table-layout: auto;
property allows the browser to automatically size columns based on their content, which can lead to unpredictable widths. For precise control, table-layout: fixed;
is often preferred, as it allows widths to be set explicitly.
flowchart TD A[Start: Bootstrap Table] --> B{Table-Responsive Class?} B -- Yes --> C[table-layout: fixed] B -- No --> D[table-layout: auto] C --> E[Explicit Width Control Possible] D --> F[Widths Based on Content] E --> G[End: Predictable Layout] F --> H[End: Dynamic Layout]
Bootstrap Table Layout Decision Flow
Method 1: Inline Styles and CSS Classes
The most straightforward way to set column widths is by applying inline styles or custom CSS classes directly to the <th>
or <td>
elements. While inline styles offer immediate control, using custom CSS classes is generally recommended for better maintainability and separation of concerns. Remember that table-layout: fixed;
is often necessary for these methods to work reliably.
<table class="table">
<thead>
<tr>
<th style="width: 150px;">Product Name</th>
<th class="col-width-200">Description</th>
<th style="width: 10%;">Price</th>
<th>Quantity</th>
</tr>
</thead>
<tbody>
<tr>
<td>Laptop</td>
<td>Powerful computing device</td>
<td>$1200</td>
<td>1</td>
</tr>
</tbody>
</table>
<style>
.col-width-200 {
width: 200px;
}
</style>
Setting column widths using inline styles and a custom CSS class.
min-width
and max-width
for more flexible control.Method 2: Utilizing Bootstrap's Grid System (Responsive Approach)
For responsive column sizing, you can leverage Bootstrap's grid system classes within your table headers. By applying classes like col-md-2
, col-lg-4
, etc., to your <th>
elements, you can define how columns should scale across different breakpoints. This method works best when the table is within a responsive container and table-layout: fixed;
is active.
<div class="table-responsive">
<table class="table">
<thead>
<tr>
<th class="col-md-3">Item ID</th>
<th class="col-md-6">Item Description</th>
<th class="col-md-3">Status</th>
</tr>
</thead>
<tbody>
<tr>
<td>#12345</td>
<td>Premium Wireless Headphones</td>
<td>Shipped</td>
</tr>
</tbody>
</table>
</div>
Using Bootstrap grid classes for responsive column widths.
<th>
or <td>
elements might not always behave as expected without table-layout: fixed;
on the table. Test thoroughly across different browsers and devices.