Reputation: 3455
I have a table that shall be dynamic (which means I cannot use table-layout: fixed
) but that shall have several fixed-width columns in it. The fixed-width columns shall also support colspans of larger than 1.
The dynamic columns (and the table itself) should work just like normal table cells in pure HTML:
The fixed-width colums should work like this:
I tried three approaches, none of them works:
<div>
into the fixed-width cellsNothing works.
table {
border-collapse: collapse;
}
td {
border: 3px solid red;
}
.fw {
overflow: hidden;
height: 20px;
}
<table width="100%">
<colgroup>
<col width="100%">
<col width="50px">
<col width="50px">
</colgroup>
<tr>
<td>My dynamic cell shall be greedy and take up all available space</td>
<td class=fw nowrap>
<div class=fw>My first fixed-width cell shall be of fixed width</div>
</td>
<td class=fw>..</td>
</tr>
<tr>
<td>dynamic</td>
<td class=fw colspan=2>Fixed cells shall also support multiple colspans</td>
</tr>
</table>
As I said, I cannot use table-layout: fixed
because I also have dynamic columns.
Upvotes: 3
Views: 7820
Reputation: 24692
You can use table-layout: fixed
if you have a suitable min-width
placed on the table to prevent overflow of the dynamically sized column:
table {
table-layout: fixed;
width: 100%;
min-width: 400px;
}
Note that the width
attribute is deprecated and the CSS property should be used to size your columns and table.
table {
border-collapse: collapse;
table-layout: fixed;
width: 100%;
min-width: 400px;
}
td {
border: 3px solid red;
overflow: hidden;
}
.fluid {
width: 100%;
}
.fixed {
width: 100px;
}
<table>
<colgroup>
<col class="fluid">
<col class="fixed">
<col class="fixed">
</colgroup>
<tr>
<td>My dynamic cell shall be greedy and take up all available space</td>
<td>My first fixed-width cell shall be of fixed width</td>
<td>....</td>
</tr>
<tr>
<td>dynamic</td>
<td colspan="2">Fixed cells shall also support multiple colspans</td>
</tr>
</table>
Upvotes: 3