"table header and left column fix"
Bootstrap 4.0.0 Snippet by lle2507

<link href="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css"> <script src="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <!------ Include the above in your HEAD tag ----------> <link href="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css"> <script src="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <!------ Include the above in your HEAD tag ----------> <link href="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css"> <script src="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <!------ Include the above in your HEAD tag ----------> <div class="JStableOuter" > <table> <thead> <tr style="top: 0px" > <th style="left: 0px" ></th> <th>COST </th> <th class="profitCol" >PROFIT </th> <th class="revenueCol" >REVENUE </th> <th>START DATE</th> <th>COMPLETION DATE</th> <th>ISSUE </th> <th>LOST </th> <th>APPROVED </th> <th>INVOICE AMOUNT </th> <th class="contBox" >COMMENTS</th> <th class="blueHead" >RUNNING BALANCE</th> <th class="blueHead" > $500 </th> <th class="blueHead" > $68,128 </th> <th class="blueHead" > $68,638 </th> <th class="blueHead" > <span class="negativeCost btnRed" > -$79,052 </span> </th> <th class="blueHead" > $68,638 </th> </tr> <tr style="top: 0px" > <th style="left: 0px" ></th> <th> <p> $16,417,480 </p> </th> <th class="profitCol" > <p> $2,412,287 </p> </th> <th class="revenueCol" > <p> $18,829,767 </p> </th> <th></th> <th></th> <th> <p> $748,371 </p> </th> <th> <p> $249,938 </p> </th> <th> <p> $17,831,458 </p> </th> <th> <p>$150,825</p> </th> <th></th> <th class="lightBlueBox" >P/L</th> <th class="lightBlueBox" > <p>Dec 16</p> <span class="profitCol" >$500</span> </th> <th class="lightBlueBox" > <p>Dec 17</p> <span class="profitCol" >$68,128</span> </th> <th class="lightBlueBox" > <p>Dec 17</p> <span class="profitCol" >$68,638</span> </th> <th class="lightBlueBox" > <p>Dec 17</p><span class="negativeCost" > -$79,052 </span> </th> <th class="lightBlueBox" > <p>Dec 17</p> <span class="profitCol" >$68,638</span> </th> </tr> </thead> <tbody> <tr> <td>Project 1</td> <td>Macelsfield <br> Macelsfield</td> <td class="profitCol" >Cheshire</td> <td class="revenueCol" >52</td> <td>Brewer</td> <td>£47,000 <br> £47,000</td> <td>Married</td> <td>2</td> <td>John Smith</td> <td>Macelsfield <br> Macelsfield</td> <td>Provide contextual feedback messages for typical</td> <td class="lightBlueBox" ><p class="revenueCol" >REV</p><p>COST</p></td> <td class="lightBlueBox" ><p class="colorOrange" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="colorOrange" >$2,000</p><p>-1,500</p></td> </tr> <tr> <td>Project 2</td> <td>Threlkeld</td> <td class="profitCol" >Cumbria</td> <td class="revenueCol" >34</td> <td>Shepherdess</td> <td>£28,000</td> <td>Single</td> <td>0</td> <td>Jenny Jones</td> <td>Threlkeld</td> <td>Cumbria</td> <td class="lightBlueBox" ><p class="revenueCol" >REV</p><p>COST</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> </tr> <tr> <td>Project 3</td> <td>Avebury</td> <td class="profitCol" >Wiltshire</td> <td class="revenueCol" >57</td> <td>Musician</td> <td>£124,000</td> <td>Married</td> <td>4</td> <td>Peter Frampton</td> <td>Avebury</td> <td>Wiltshire</td> <td class="lightBlueBox" ><p class="revenueCol" >REV</p><p>COST</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> </tr> <tr> <td>Project 4</td> <td>Malvern</td> <td class="profitCol" >Worchestershire</td> <td class="revenueCol" >48</td> <td>Naturalist</td> <td>£65,000</td> <td>Married</td> <td>2</td> <td>Peter Frampton</td> <td>Avebury</td> <td>Wiltshire</td> <td class="lightBlueBox" ><p class="revenueCol" >REV</p><p>COST</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> </tr> <tr> <td>Project 5</td> <td>St Albans</td> <td class="profitCol" >Hertfordshire</td> <td class="revenueCol" >67</td> <td>Pharmasist</td> <td>Retired</td> <td>Married</td> <td>3</td> <td>Peter Frampton</td> <td>Avebury</td> <td>Wiltshire</td> <td class="lightBlueBox" ><p class="revenueCol" >REV</p><p>COST</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> </tr> <tr> <td>Project 6</td> <td>Edinburgh</td> <td class="profitCol" >Lothian </td> <td class="revenueCol" >36</td> <td>Vigilante</td> <td>£86,000</td> <td>Single</td> <td>Unknown</td> <td>Peter Frampton</td> <td>Avebury</td> <td>Wiltshire</td> <td class="lightBlueBox" ><p class="revenueCol" >REV</p><p>COST</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> </tr> <tr> <td>Project 7</td> <td>Bedford</td> <td class="profitCol" >Bedfordshire</td> <td class="revenueCol" >43</td> <td>Housewife</td> <td>N/A</td> <td>Married</td> <td>1</td> <td>Peter Frampton</td> <td>Avebury</td> <td>Wiltshire</td> <td class="lightBlueBox" ><p class="revenueCol" >REV</p><p>COST</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> </tr> <tr> <td>Project 8</td> <td>Manhattan</td> <td class="profitCol" >New York</td> <td class="revenueCol" >55</td> <td>Policewoman</td> <td>$36,000</td> <td>Single</td> <td>1</td> <td>Peter Frampton</td> <td>Avebury</td> <td>Wiltshire</td> <td class="lightBlueBox" ><p class="revenueCol" >REV</p><p>COST</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> </tr> <tr> <td>Project 9</td> <td>Bolingbroke</td> <td class="profitCol" >Lincolnshire</td> <td class="revenueCol" >45</td> <td>Landowner</td> <td>Lots</td> <td>Married</td> <td>6</td> <td>Peter Frampton</td> <td>Avebury</td> <td>Wiltshire</td> <td class="lightBlueBox" ><p class="revenueCol" >REV</p><p>COST</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> </tr> <tr> <td>Project 10</td> <td>Alderley</td> <td class="profitCol" >Cheshire</td> <td class="revenueCol" >352</td> <td>Arcanist</td> <td>A pile of gems</td> <td>Single</td> <td>0</td> <td>Peter Frampton</td> <td>Avebury</td> <td>Wiltshire</td> <td class="lightBlueBox" ><p class="revenueCol" >REV</p><p>COST</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="colorOrange" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> <td class="lightBlueBox" ><p class="revenueCol" >$2,000</p><p>-1,500</p></td> </tr> </tbody> </table> </div> </body>
body { padding: 0px; margin: 0px } .JStableOuter table { position: relative; width: 100%; background-color: #fff; border-collapse: collapse; font-family: arial; display: block; height: 450px; overflow: scroll; } .JStableOuter { max-width:1170px; margin:auto; border:1px solid #999; } /*thead*/ .JStableOuter thead { position: relative; /*display: block;*/ /*seperates the header from the body allowing it to be positioned*/ overflow: visible; } .JStableOuter thead th { background-color: #fff; /* min-width: 120px;*/ height: 32px; padding: 3px 15px 0; font-size: 13px; vertical-align: top; position: relative; box-shadow: 0 1px 0px 1px #999; } .JStableOuter thead th p { margin: 5px 0; font-weight: normal; } .JStableOuter thead th:nth-child(1) {/*first cell in the header*/ position: relative; /* display: block;*/ /*seperates the first cell in the header from the header*/ background-color: #fff; z-index: 99; border-right: 1px solid #999; box-shadow: 0 1px 1px 1px #999; min-width: 120px; } .JStableOuter thead tr {/*first cell in the header*/ position: relative; } .JStableOuter tbody { /*border-top: 1px solid #999;*/} .JStableOuter tbody td { background-color: #fff; /*min-width: 120px;*/ border: 1px solid #999; padding: 0 15px; min-width: 100px; font-size: 13px; box-shadow: 0 1px 0px 1px #999; } .JStableOuter tbody tr td:nth-child(1) { /*the first cell in each tr*/ position: relative; /*display: block;*/ /*seperates the first column from the tbody*/ height: 40px; background-color: #fff; box-shadow: 0 0px 1px 1px #999; } .tableOuter { max-width: 800px; overflow: auto; } .negativeCost { color: #f10; } .profitCol { color: #81a65c; } .revenueCol { color: #5484bf; } .JStableOuter thead th.blueHead { background-color: #7b7b7b; color: #fff; } .JStableOuter thead th.lightBlueBox, .JStableOuter tbody td.lightBlueBox { background: #efefef; border-color: #999; } .JStableOuter p { margin: 5px 0; } .btnRed { background: #b51a01; color: #fff; border-radius: 50px; padding: 5px 15px; } .colorOrange { color: #f6984a; } .contBox { min-width: 150px; }
$(document).ready(function() { $('.JStableOuter table').scroll(function(e) { $('.JStableOuter thead').css("left", -$(".JStableOuter tbody").scrollLeft()); $('.JStableOuter thead th:nth-child(1)').css("left", $(".JStableOuter table").scrollLeft() -0 ); $('.JStableOuter tbody td:nth-child(1)').css("left", $(".JStableOuter table").scrollLeft()); $('.JStableOuter thead').css("top", -$(".JStableOuter tbody").scrollTop()); $('.JStableOuter thead tr th').css("top", $(".JStableOuter table").scrollTop()); }); });

Related: See More


Questions / Comments: