<h1 class="intro">Testing fixed table header</h1>
<p class="intro"><strong>Very Jumpy in IE11 - I wouldn't use this method</strong></p>
<div class="page">
<div class="table-con" id="table">
<table class="data-table">
<thead>
<tr>
<th></th>
<th>Header 1</th>
<th>Header 2</th>
<th>Header 3</th>
<th>Header 4</th>
<th>Header 5</th>
<th>Header 6</th>
<th>Header 7</th>
<th>Header 8</th>
<th>Header 9</th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
<tr>
<td></td>
<td>Data - 1256</td>
<td>Data - 1256 Data - 1256 Data - 1256</td>
<td>Data - 1256</td>
<td>1256</td>
<td>125</td>
<td>Data - abc</td>
<td>abc</td>
<td>abc</td>
<td>ABCDE</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>scroll</p>
<p>scroll</p>
<p>scroll</p>
<p>scroll</p>
<p>scroll</p>
<p>scroll</p>
<p>scroll</p>
<p>scroll</p>
<p>scroll</p>
<p>scroll</p>
<p>scroll</p>
<p>scroll</p>
<p>scroll</p>
<p>scroll</p>
<p>scroll</p>
<p>scroll</p>
<p>scroll</p>
<p>scroll</p>
<p>scroll</p>
<p>scroll</p>
html,
body {
margin: 0;
padding: 0;
}
html {
box-sizing: border-box;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
background: grey;
font-family: sans-serif;
}
.intro{text-align:center;}
.page {
background: white;
max-width: 1200px;
margin: 0 auto;
}
.table-con {
overflow: auto;
max-width: 1200px;
height: 500px;
position: relative;
}
table.data-table {
border-collapse: collapse;
width: 100%;
width: 1500px; /* for testing only */
}
.data-table thead th:first-child {
width: 20px;
padding: 0;
}
.data-table th {
text-align: left;
/*transition:transform .5s ease;*/
}
.data-table thead {
background: white;
border-bottom: 5px solid red;
}
.data-table tbody td {
border-bottom: 1px solid #aaa;
}
.data-table tbody tr:nth-child(even) td:not(:first-child) {
background: yellow;
}
.data-table tbody td:first-child {
background: none;
border: none;
padding: 0;
}
.data-table th,
.data-table td {
padding: 10px 5px;
}
.data-table thead th {
background: #000;
color: #fff;
position: -webkit-sticky;
position: sticky;
top: 0;
}
/* check for position:sticky support */
detect {
display: none;
}
@supports (position: sticky) or (position: -webkit-sticky) {
detect {
display: block;
}
}
View Compiled
(function() {
// detect CSS position:sticky support by checking elements display as it is set to block in css supports rule
var newEl = document.createElement("detect");
document.body.appendChild(newEl);
if (getComputedStyle(newEl).getPropertyValue("display") === "none") {
// only browsers that don't support sticky get this
document.getElementById("table").addEventListener("scroll", function() {
var translate = "translate(0," + this.scrollTop + "px)";
var myElements = this.querySelectorAll("thead th");
for (var i = 0; i < myElements.length; i++) {
myElements[i].style.transform = translate;
}
});
// endif
}
})();
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.