Main intention of this question is to make table header fixed and when we scroll vertically only elements should scrolled and table header should be on the same position
And I want this to be done without manually fixing the width of table header, As my column header width is dependent on the td elements .I see some questions where solution found using manually fixing the width of the table header.
Can someone help me in approaching this, by using the same CSS class name
Below is the Demo of my table.
CSS I am using for the above table
.wrapper {
overflow : auto;
width: 1350px;
max-height : 250px;
white-space: nowrap;
padding-bottom : 10px;
padding-top : 10px;
}
.professional .title {
padding-top: 10px;
backgrounionad: #2980b9;
}
td {
white-space: nowrap;
border-style: solid;
padding: 8px;
border-right-color: #ff0000;
}
th {
position:auto;
text-align: center;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
width : auto;
height : word-spacing;
white-space: nowrap;
}
.table {
width: auto;
max-width: auto;
margin-bottom: 20px;
}
.tableheader {
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
font-size: 1.3rem;
border-radius: 5px;
text-transform: capitalize;
position: relative;
padding: 10px 25px 10px 25px;
}
You can do it this way :
<thead></thead>
and add the css position:fixed;
<tbody></tbody>
and add the css top: 3em; position:relative;
The value off the top
will depend of your font-size.This will work if you don't have an horizontal scroll.
.wrapper {
overflow: auto;
width: 1350px;
max-height: 250px;
white-space: nowrap;
padding-bottom: 10px;
padding-top: 10px;
}
.professional .title {
padding-top: 10px;
background: #2980b9;
}
td {
white-space: nowrap;
border-style: solid;
padding: 8px;
border-right-color: #ff0000;
}
th {
position: auto;
text-align: center;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
width: auto;
height: word-spacing;
white-space: nowrap;
}
.table {
width: auto;
max-width: auto;
margin-bottom: 20px;
}
.tableheader {
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
font-size: 1.3rem;
border-radius: 5px;
text-transform: capitalize;
position: relative;
padding: 10px 25px 10px 25px;
}
tbody{
top:3em;
position:relative;
}
thead {
position:fixed;
}
<link rel="stylesheet" href="style.css" />
<body>
Scrollable Table
<div class="wrapper">
<table class="professional">
<thead>
<tr>
<th class="tableheader">Message ID</th>
<th class="tableheader">Operation</th>
<th class="tableheader">Status</th>
<th class="tableheader">Send Time</th>
<th class="tableheader">Receive Time</th>
<th class="tableheader">Send Data</th>
<th class="tableheader">Receive Data</th>
</tr>
</thead>
<tbody>
<!-- ngRepeat: list in opMessageLogs -->
<tr class="features ng-scope" ng-repeat="list in opMessageLogs">
<td class="ng-binding">58231e66982cf7857fee2cb5</td>
<td class="ng-binding">Operation1</td>
<td class="ng-binding">SUCCESS</td>
<td class="ng-binding">null</td>
<td class="ng-binding">2016-11-09 18:32:30</td>
<td ng-click="showText(list.REQUEST,$index)">Request</td>
<td ng-click="showText(list.RESPONSE,$index)">Response</td>
</tr>
<!-- end ngRepeat: list in opMessageLogs -->
<tr class="features ng-scope" ng-repeat="list in opMessageLogs">
<td class="ng-binding">58231e681b58b970137b56aa</td>
<td class="ng-binding">Operation2</td>
<td class="ng-binding">SUCCESS</td>
<td class="ng-binding">2016-11-09 18:32:32</td>
<td class="ng-binding">2016-11-09 18:32:32</td>
<td ng-click="showText(list.REQUEST,$index)">Request</td>
<td ng-click="showText(list.RESPONSE,$index)">Response</td>
</tr>
<!-- end ngRepeat: list in opMessageLogs -->
<tr class="features ng-scope" ng-repeat="list in opMessageLogs">
<td class="ng-binding">58231e691b58b970137b56ab</td>
<td class="ng-binding">Operation3</td>
<td class="ng-binding">SUCCESS</td>
<td class="ng-binding">2016-11-09 18:32:33</td>
<td class="ng-binding">2016-11-09 18:32:33</td>
<td ng-click="showText(list.REQUEST,$index)">Request</td>
<td ng-click="showText(list.RESPONSE,$index)">Response</td>
</tr>
<tr class="features ng-scope" ng-repeat="list in opMessageLogs">
<td class="ng-binding">58231e691b58b970137b56ab</td>
<td class="ng-binding">Operation3</td>
<td class="ng-binding">SUCCESS</td>
<td class="ng-binding">2016-11-09 18:32:33</td>
<td class="ng-binding">2016-11-09 18:32:33</td>
<td ng-click="showText(list.REQUEST,$index)">Request</td>
<td ng-click="showText(list.RESPONSE,$index)">Response</td>
</tr>
<tr class="features ng-scope" ng-repeat="list in opMessageLogs">
<td class="ng-binding">58231e691b58b970137b56ab</td>
<td class="ng-binding">Operation3</td>
<td class="ng-binding">SUCCESS</td>
<td class="ng-binding">2016-11-09 18:32:33</td>
<td class="ng-binding">2016-11-09 18:32:33</td>
<td ng-click="showText(list.REQUEST,$index)">Request</td>
<td ng-click="showText(list.RESPONSE,$index)">Response</td>
</tr>
<tr class="features ng-scope" ng-repeat="list in opMessageLogs">
<td class="ng-binding">58231e691b58b970137b56ab</td>
<td class="ng-binding">Operation3</td>
<td class="ng-binding">SUCCESS</td>
<td class="ng-binding">2016-11-09 18:32:33</td>
<td class="ng-binding">2016-11-09 18:32:33</td>
<td ng-click="showText(list.REQUEST,$index)">Request</td>
<td ng-click="showText(list.RESPONSE,$index)">Response</td>
</tr>
<tr class="features ng-scope" ng-repeat="list in opMessageLogs">
<td class="ng-binding">58231e691b58b970137b56ab</td>
<td class="ng-binding">Operation3</td>
<td class="ng-binding">SUCCESS</td>
<td class="ng-binding">2016-11-09 18:32:33</td>
<td class="ng-binding">2016-11-09 18:32:33</td>
<td ng-click="showText(list.REQUEST,$index)">Request</td>
<td ng-click="showText(list.RESPONSE,$index)">Response</td>
</tr>
<tr class="features ng-scope" ng-repeat="list in opMessageLogs">
<td class="ng-binding">58231e691b58b970137b56ab</td>
<td class="ng-binding">Operation3</td>
<td class="ng-binding">SUCCESS</td>
<td class="ng-binding">2016-11-09 18:32:33</td>
<td class="ng-binding">2016-11-09 18:32:33</td>
<td ng-click="showText(list.REQUEST,$index)">Request</td>
<td ng-click="showText(list.RESPONSE,$index)">Response</td>
</tr>
<tr class="features ng-scope" ng-repeat="list in opMessageLogs">
<td class="ng-binding">58231e691b58b970137b56ab</td>
<td class="ng-binding">Operation3</td>
<td class="ng-binding">SUCCESS</td>
<td class="ng-binding">2016-11-09 18:32:33</td>
<td class="ng-binding">2016-11-09 18:32:33</td>
<td ng-click="showText(list.REQUEST,$index)">Request</td>
<td ng-click="showText(list.RESPONSE,$index)">Response</td>
</tr>
<tr class="features ng-scope" ng-repeat="list in opMessageLogs">
<td class="ng-binding">58231e691b58b970137b56ab</td>
<td class="ng-binding">Operation3</td>
<td class="ng-binding">SUCCESS</td>
<td class="ng-binding">2016-11-09 18:32:33</td>
<td class="ng-binding">2016-11-09 18:32:33</td>
<td ng-click="showText(list.REQUEST,$index)">Request</td>
<td ng-click="showText(list.RESPONSE,$index)">Response</td>
</tr>
<tr class="features ng-scope" ng-repeat="list in opMessageLogs">
<td class="ng-binding">58231e691b58b970137b56ab</td>
<td class="ng-binding">Operation3</td>
<td class="ng-binding">SUCCESS</td>
<td class="ng-binding">2016-11-09 18:32:33</td>
<td class="ng-binding">2016-11-09 18:32:33</td>
<td ng-click="showText(list.REQUEST,$index)">Request</td>
<td ng-click="showText(list.RESPONSE,$index)">Response</td>
</tr>
<!-- end ngRepeat: list in opMessageLogs -->
<tr class="features ng-scope" ng-repeat="list in opMessageLogs">
<td class="ng-binding">58231e6d1b58b970137b56ac</td>
<td class="ng-binding">Operation4</td>
<td class="ng-binding">SUCCESS</td>
<td class="ng-binding">2016-11-09 18:32:33</td>
<td class="ng-binding">2016-11-09 18:32:37</td>
<td ng-click="showText(list.REQUEST,$index)">Request</td>
<td ng-click="showText(list.RESPONSE,$index)">Response</td>
</tr>
<!-- end ngRepeat: list in opMessageLogs -->
<tr class="features ng-scope" ng-repeat="list in opMessageLogs">
<td class="ng-binding">58231e721b58b970137b56ad</td>
<td class="ng-binding">Operation5</td>
<td class="ng-binding">FAILURE</td>
<td class="ng-binding">2016-11-09 18:32:37</td>
<td class="ng-binding">null</td>
<td ng-click="showText(list.REQUEST,$index)">Request</td>
<td ng-click="showText(list.RESPONSE,$index)">Response</td>
</tr>
<!-- end ngRepeat: list in opMessageLogs -->
<tr class="features ng-scope" ng-repeat="list in opMessageLogs">
<td class="ng-binding">58231e731b58b970137b56ae</td>
<td class="ng-binding">Operation6</td>
<td class="ng-binding">SUCCESS</td>
<td class="ng-binding">2016-11-09 18:32:43</td>
<td class="ng-binding">2016-11-09 18:32:43</td>
<td ng-click="showText(list.REQUEST,$index)">Request</td>
<td ng-click="showText(list.RESPONSE,$index)">Response</td>
</tr>
<!-- end ngRepeat: list in opMessageLogs -->
<tr class="features ng-scope" ng-repeat="list in opMessageLogs">
<td class="ng-binding">58231e741b58b970137b56af</td>
<td class="ng-binding">Operation7</td>
<td class="ng-binding">SUCCESS</td>
<td class="ng-binding">2016-11-09 18:32:43</td>
<td class="ng-binding">2016-11-09 18:32:44</td>
<td ng-click="showText(list.REQUEST,$index)">Request</td>
<td ng-click="showText(list.RESPONSE,$index)">Response</td>
</tr>
<!-- end ngRepeat: list in opMessageLogs -->
<tr class="features ng-scope" ng-repeat="list in opMessageLogs">
<td class="ng-binding">58231e761b58b970137b56b0</td>
<td class="ng-binding">Operation8</td>
<td class="ng-binding">SUCCESS</td>
<td class="ng-binding">2016-11-09 18:32:46</td>
<td class="ng-binding">2016-11-09 18:32:46</td>
<td ng-click="showText(list.REQUEST,$index)">Request</td>
<td ng-click="showText(list.RESPONSE,$index)">Response</td>
</tr>
<!-- end ngRepeat: list in opMessageLogs -->
<tr class="features ng-scope" ng-repeat="list in opMessageLogs">
<td class="ng-binding">58231e771b58b970137b56b1</td>
<td class="ng-binding">Operation9</td>
<td class="ng-binding">SUCCESS</td>
<td class="ng-binding">2016-11-09 18:32:46</td>
<td class="ng-binding">2016-11-09 18:32:47</td>
<td ng-click="showText(list.REQUEST,$index)">Request</td>
<td ng-click="showText(list.RESPONSE,$index)">Response</td>
</tr>
<!-- end ngRepeat: list in opMessageLogs -->
<tr class="features ng-scope" ng-repeat="list in opMessageLogs">
<td class="ng-binding">58231e781b58b970137b56b2</td>
<td class="ng-binding">Operation10</td>
<td class="ng-binding">SUCCESS</td>
<td class="ng-binding">2016-11-09 18:32:47</td>
<td class="ng-binding">2016-11-09 18:32:48</td>
<td ng-click="showText(list.REQUEST,$index)">Request</td>
<td ng-click="showText(list.RESPONSE,$index)">Response</td>
</tr>
<!-- end ngRepeat: list in opMessageLogs -->
<tr class="features ng-scope" ng-repeat="list in opMessageLogs">
<td class="ng-binding">58231e791b58b970137b56b3</td>
<td class="ng-binding">Operation11</td>
<td class="ng-binding">SUCCESS</td>
<td class="ng-binding">2016-11-09 18:32:48</td>
<td class="ng-binding">2016-11-09 18:32:49</td>
<td ng-click="showText(list.REQUEST,$index)">Request</td>
<td ng-click="showText(list.RESPONSE,$index)">Response</td>
</tr>
<!-- end ngRepeat: list in opMessageLogs -->
<tr class="features ng-scope" ng-repeat="list in opMessageLogs">
<td class="ng-binding">58231e8d982cf7857fee2cb9</td>
<td class="ng-binding">Operation1</td>
<td class="ng-binding">SUCCESS</td>
<td class="ng-binding">null</td>
<td class="ng-binding">2016-11-09 18:33:09</td>
<td ng-click="showText(list.REQUEST,$index)">Request</td>
<td ng-click="showText(list.RESPONSE,$index)">Response</td>
</tr>
<!-- end ngRepeat: list in opMessageLogs -->
<tr class="features ng-scope" ng-repeat="list in opMessageLogs">
<td class="ng-binding">58231e97a782de0c9ea24979</td>
<td class="ng-binding">Operation2</td>
<td class="ng-binding">SUCCESS</td>
<td class="ng-binding">2016-11-09 18:33:19</td>
<td class="ng-binding">2016-11-09 18:33:19</td>
<td ng-click="showText(list.REQUEST,$index)">Request</td>
<td ng-click="showText(list.RESPONSE,$index)">Response</td>
</tr>
<!-- end ngRepeat: list in opMessageLogs -->
</tbody>
</table>
</div>
</body>