<style> .dataTables_scrollBody #tableId { border-collapse: separate !important; } </style> <div style="overflow-x:auto;width: 100%;" class="dataTables_scrollBody"> <table id="tableId" style="width: 350%;" border="0" cellspacing="0" cellpadding="0"> </table> </div> <script> /*冻结表格前几列*/ $(".dataTables_scrollBody").scroll(function(){//给table外面的div滚动事件绑定一个函数 var left=$(".dataTables_scrollBody").scrollLeft();//获取滚动的距离 let w1 = $(".dataTables_scrollBody").width(); let w2 = $("#tableId").width(); w2 = w2-w1+2; if(left >w2){ left = w2; } var theadtrs=$(".dataTables_scrollBody #tableId thead tr");//获取表格的thead 的tr var tbodytrs=$(".dataTables_scrollBody #tableId tbody tr");//获取表格的body 的tr //对每一个tr(每一行)进行处理 //获得每一行下面的所有的td,然后选中下标为0的,即第一列,设置position为相对定位 //相对于父div左边的距离为滑动的距离,然后设置个背景颜色,覆盖住后面几列数据滑动到第一列下面的情况 //如果有必要也可以设置一个z-index属性 var num = 5; theadtrs.each(function(i){ for (var j = 0; j < num; j++) { $(this).children().eq(j).css({"position":"relative","top":"0px","left":left,"z-index":2}); } }); var num1 = 5; tbodytrs.each(function(ii){ for (var jj = 0; jj < num1; jj++) { $(this).children().eq(jj).css({"position":"relative","top":"0px","left":left,"z-index":2,"background":"#fff"}); } }); }); </script>
td设置position:relative之后边线消失的问题
给td设置了position:relative属性之后,如果td还同时存在背景色,在火狐下面就会有边线消失的情况。解决这个bug有两个方法,一个是设置table的属性为border-collapse: separate;td设置单边线样式(亲测有效)。另一个方法是设置background-clip: padding-box;这个方法最简单