Reputation: 33
I am trying to make fixed table header and first two columns fixed. I am having trouble in making columns fixed (after scrolling right they columns are always displayed) The current code I have makes table heading fixed and it works well, but I need columns # and Name fixed. Table is big, have many columns in the header.
.tableFixHead {
overflow-y: auto;
height: 600px;
}
.tableFixHead table {
border-collapse: collapse;
width: 100%;
}
.tableFixHead th,
.tableFixHead td {
padding: 8px 16px;
}
.tableFixHead th {
position: sticky;
top: 0;
background: #eee;
}
<div class="tableFixHead">
<table class="table table-bordered">
<thead>
<tr>
<th>#</th>
<th>Name</th>
<th>01-11</th>
<th>02-11</th>
<th>03-11</th>
<th>04-11</th>
<th>05-11</th>
<th>06-11</th>
</th>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Jack</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
</tr>
<tr>
<td>2</td>
<td>Michel</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
</tr>
<tr>
<td>3</td>
<td>Amanda</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
</tr>
</tbody>
</table>
</div>
Upvotes: 3
Views: 11309
Reputation: 9012
.tableFixHead {
overflow: auto;
height: 100px;
width:300px;
}
.tableFixHead table {
border-collapse: collapse;
width: 100%;
}
.tableFixHead th,
.tableFixHead td {
padding: 8px 16px;
}
td:first-child, th:first-child {
position:sticky;
left:0;
z-index:1;
background-color:white;
}
td:nth-child(2),th:nth-child(2) {
position:sticky;
left:40px;
z-index:1;
background-color:white;
}
.tableFixHead th {
position: sticky;
top: 0;
background: #eee;
z-index:2
}
th:first-child , th:nth-child(2) {
z-index:3
}
<div class="tableFixHead">
<table class="table table-bordered">
<thead>
<tr>
<th>#</th>
<th>Name</th>
<th>01-11</th>
<th>02-11</th>
<th>03-11</th>
<th>04-11</th>
<th>05-11</th>
<th>06-11</th>
</th>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Jack</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
</tr>
<tr>
<td>2</td>
<td>Michel</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
</tr>
<tr>
<td>3</td>
<td>Amanda</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
</tr>
<tr>
<td>3</td>
<td>Amanda</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
<td>Y</td>
</tr>
</tbody>
</table>
</div>
I edited your code. ¿is this what you are looking for?
Upvotes: 13