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()); }); }); 


