I would like to freeze the first column of my html table. after a few attempts i manage to freeze it but somehow when i scroll the table horizontally the columns at the left seems like overlapped with the first column. i couldn't find a way to fix it. can you please help? you can use this codepen to test it out.
CSS:
table {
width: 100%;
position: relative;
overflow: hidden;
display: block;
}
thead {
width: 100%;
display: block;
position: relative;
overflow: visible;
}
thead th:nth-child(1) {
position: relative;
display: block;
min-width:200px;
}
tbody {
width: 100%;
position: relative;
display: block;
max-height: 307px;
overflow: scroll;
}
tbody tr td:nth-child(1) {
position: relative;
display: block;
min-width:200px;
}
table th, table td {
min-width: 150px;
max-width: 150px;
padding: 2px 3px;
text-align: left;
text-overflow: ellipsis;
border: 1px solid #e1e1e1;
}
JS:
$(document).ready(function() {
$('tbody').scroll(function(e) {
$('thead').css("left", -$("tbody").scrollLeft());
$('thead th:nth-child(1)').css("left", $("tbody").scrollLeft());
$('tbody td:nth-child(1)').css("left", $("tbody").scrollLeft());
});
});