Reputation: 2899
I have some HTML code that generates an HTML table with header and data rows. The header columns do not line up with the data columns.
I got this code from an example I found online. I want the header cell widths to match the data cell widths of the table.
Here is the below code is jsfiddle: http://jsfiddle.net/tee3n/.
HTML
<div class="scrollableContainer">
<div class="scrollingArea">
<table class="cruises scrollable">
<thead>
<tr>
<th><div class="name">Name</div></th>
<th><div class="operator">Operator</div></th>
<th><div class="began">Began operation</div></th>
<th><div class="tonnage">Tonnage</div></th>
<th><div class="status">Status</div></th>
</tr>
</thead>
<tbody>
<tr>
<td><div class="name">Name of ship</div></td>
<td><div class="operator">Who operates</div></td>
<td><div class="began">Began service when</div></td>
<td><div class="tonnage">How big</div></td>
<td><div class="status">Current status</div></td>
</tr>
<tr>
<td><div class="name">Name of ship</div></td>
<td><div class="operator">Who operates</div></td>
<td><div class="began">Began service when</div></td>
<td><div class="tonnage">How big</div></td>
<td><div class="status">Current status</div></td>
</tr>
<tr>
<td><div class="name">Name of ship</div></td>
<td><div class="operator">Who operates</div></td>
<td><div class="began">Began service when</div></td>
<td><div class="tonnage">How big</div></td>
<td><div class="status">Current status</div></td>
</tr>
<tr>
<td><div class="name">Name of ship</div></td>
<td><div class="operator">Who operates</div></td>
<td><div class="began">Began service when</div></td>
<td><div class="tonnage">How big</div></td>
<td><div class="status">Current status</div></td>
</tr>
<tr>
<td><div class="name">Name of ship</div></td>
<td><div class="operator">Who operates</div></td>
<td><div class="began">Began service when</div></td>
<td><div class="tonnage">How big</div></td>
<td><div class="status">Current status</div></td>
</tr><tr>
<td><div class="name">Name of ship</div></td>
<td><div class="operator">Who operates</div></td>
<td><div class="began">Began service when</div></td>
<td><div class="tonnage">How big</div></td>
<td><div class="status">Current status</div></td>
</tr>
<tr>
<td><div class="name">Name of ship</div></td>
<td><div class="operator">Who operates</div></td>
<td><div class="began">Began service when</div></td>
<td><div class="tonnage">How big</div></td>
<td><div class="status">Current status</div></td>
</tr></tr><tr>
<td><div class="name">Name of ship</div></td>
<td><div class="operator">Who operates</div></td>
<td><div class="began">Began service when</div></td>
<td><div class="tonnage">How big</div></td>
<td><div class="status">Current status</div></td>
</tr>
<tr>
<td><div class="name">Name of ship</div></td>
<td><div class="operator">Who operates</div></td>
<td><div class="began">Began service when</div></td>
<td><div class="tonnage">How big</div></td>
<td><div class="status">Current status</div></td>
</tr>
</tr><tr>
<td><div class="name">Name of ship</div></td>
<td><div class="operator">Who operates</div></td>
<td><div class="began">Began service when</div></td>
<td><div class="tonnage">How big</div></td>
<td><div class="status">Current status</div></td>
</tr>
<tr>
<td><div class="name">Name of ship</div></td>
<td><div class="operator">Who operates</div></td>
<td><div class="began">Began service when</div></td>
<td><div class="tonnage">How big</div></td>
<td><div class="status">Current status</div></td>
</tr>
</tbody>
</table>
</div>
</div>
CSS:
table.cruises {
font-family: verdana, arial, helvetica, sans-serif;
font-size: 11px;
cellspacing: 0;
border-collapse: collapse;
width: 99.9%;
}
table.cruises th, table.cruises td {
border-right: 1px solid #999;
border-bottom: 1px solid #999;
width: 20%;
}
table.cruises th { background: #aab; }
table.cruises td { background: #eee; }
div.scrollableContainer {
position: relative;
width: 80%;
padding-top: 1.7em;
margin: 40px;
border: 1px solid #999;
background: black;
}
div.scrollingArea {
width: 100%;
height: 240px;
overflow: auto;
}
table.scrollable thead tr {
left: 0; top: 0;
position: absolute;
width: auto;
}
table.cruises .name { width: 20%; }
table.cruises .operator { width: 20%; }
table.cruises .began { width: 20%; text-align:center; }
table.cruises .tonnage { width: 20%; text-align:center; }
table.cruises .status { width: 20%; }
Why is the header not aligning up with the data columns underneath?
Upvotes: 4
Views: 6495
Reputation: 4192
Check your CSS:
table.scrollable thead th tr {
left: 0; top: 0;
position: absolute;
width: auto;
}
I added the th
.
Also, removed padding-top: 1.7em;
from the
div.scrollableContainer {
position: relative;
width: 80%;
padding-top: 1.7em;
margin: 40px;
border: 1px solid #999;
background: black;
}
to remove the black space at the top. It should work (tested in Chrome).
Upvotes: 1