स्वीकृत उत्तर ने एक अच्छा प्रारंभिक बिंदु प्रदान किया, लेकिन यदि आप फ्रेम का आकार बदलते हैं, तो कॉलम की चौड़ाई को बदलें, या यहां तक कि तालिका के डेटा को भी बदल दें, हेडर विभिन्न तरीकों से गड़बड़ हो जाएगा। मेरे द्वारा देखे गए हर दूसरे उदाहरण में समान मुद्दे हैं, या तालिका के लेआउट पर कुछ गंभीर प्रतिबंध लगाए गए हैं।
मुझे लगता है कि मैंने आखिरकार इन सभी समस्याओं को हल कर लिया है, हालांकि। इसने बहुत सीएसएस लिया , लेकिन अंतिम उत्पाद सामान्य तालिका के रूप में विश्वसनीय और उपयोग में आसान है।
यहां एक उदाहरण दिया गया है जिसमें ओपी द्वारा संदर्भित तालिका: jsFiddle को दोहराने के लिए सभी आवश्यक विशेषताएं हैं
इसे संदर्भ के समान बनाने के लिए रंगों और सीमाओं को बदलना होगा। सीएसएस टिप्पणियों में उन प्रकार के परिवर्तनों की जानकारी कैसे प्रदान की जाती है।
यहाँ कोड है:
body {
box-sizing: border-box;
width: 100%;
height: 100%;
margin: 0;
padding: 0 20px 0 20px;
text-align: center;
background: white;
}
.scrollingtable {
box-sizing: border-box;
display: inline-block;
vertical-align: middle;
overflow: hidden;
width: auto;
min-width: 0;
height: 188px;
min-height: 0;
font-family: Verdana, Tahoma, sans-serif;
font-size: 15px;
line-height: 20px;
padding: 20px 0 20px 0;
text-align: left;
}
.scrollingtable * {box-sizing: border-box;}
.scrollingtable > div {
position: relative;
border-top: 1px solid black;
height: 100%;
padding-top: 20px;
}
.scrollingtable > div:before {
top: 0;
background: cornflowerblue;
}
.scrollingtable > div:before,
.scrollingtable > div > div:after {
content: "";
position: absolute;
z-index: -1;
width: 100%;
height: 100%;
left: 0;
}
.scrollingtable > div > div {
min-height: 0;
max-height: 100%;
overflow: scroll;
overflow-x: hidden;
border: 1px solid black;
}
.scrollingtable > div > div:after {background: white;}
.scrollingtable > div > div > table {
width: 100%;
border-spacing: 0;
margin-top: -20px;
}
.scrollingtable > div > div > table > caption {
position: absolute;
top: -20px;
margin-top: -1px;
width: 100%;
font-weight: bold;
text-align: center;
}
.scrollingtable > div > div > table > * > tr > * {padding: 0;}
.scrollingtable > div > div > table > thead {
vertical-align: bottom;
white-space: nowrap;
text-align: center;
}
.scrollingtable > div > div > table > thead > tr > * > div {
display: inline-block;
padding: 0 6px 0 6px;
}
.scrollingtable > div > div > table > thead > tr > :first-child:before {
content: "";
position: absolute;
top: 0;
left: 0;
height: 20px;
border-left: 1px solid black;
}
.scrollingtable > div > div > table > thead > tr > * > div[label]:before,
.scrollingtable > div > div > table > thead > tr > * > div > div:first-child,
.scrollingtable > div > div > table > thead > tr > * + :before {
position: absolute;
top: 0;
white-space: pre-wrap;
color: white;
}
.scrollingtable > div > div > table > thead > tr > * > div[label]:before,
.scrollingtable > div > div > table > thead > tr > * > div[label]:after {content: attr(label);}
.scrollingtable > div > div > table > thead > tr > * + :before {
content: "";
display: block;
min-height: 20px;
padding-top: 1px;
border-left: 1px solid black;
}
.scrollingtable .scrollbarhead {float: right;}
.scrollingtable .scrollbarhead:before {
position: absolute;
width: 100px;
top: -1px;
background: white;
}
.scrollingtable > div > div > table > tbody > tr:after {
content: "";
display: table-cell;
position: relative;
padding: 0;
border-top: 1px solid black;
top: -1px;
}
.scrollingtable > div > div > table > tbody {vertical-align: top;}
.scrollingtable > div > div > table > tbody > tr {background: white;}
.scrollingtable > div > div > table > tbody > tr > * {
border-bottom: 1px solid black;
padding: 0 6px 0 6px;
height: 20px;
}
.scrollingtable > div > div > table > tbody:last-of-type > tr:last-child > * {border-bottom: none;}
.scrollingtable > div > div > table > tbody > tr:nth-child(even) {background: gainsboro;}
.scrollingtable > div > div > table > tbody > tr > * + * {border-left: 1px solid black;}
<div class="scrollingtable">
<div>
<div>
<table>
<caption>Top Caption</caption>
<thead>
<tr>
<th><div label="Column 1"></div></th>
<th><div label="Column 2"></div></th>
<th><div label="Column 3"></div></th>
<th>
<div><div>Column 4</div><div>Column 4</div></div>
</th>
<th class="scrollbarhead"/>
</tr>
</thead>
<tbody>
<tr><td>Lorem ipsum</td><td>Dolor</td><td>Sit</td><td>Amet consectetur</td></tr>
<tr><td>Lorem ipsum</td><td>Dolor</td><td>Sit</td><td>Amet consectetur</td></tr>
<tr><td>Lorem ipsum</td><td>Dolor</td><td>Sit</td><td>Amet consectetur</td></tr>
<tr><td>Lorem ipsum</td><td>Dolor</td><td>Sit</td><td>Amet consectetur</td></tr>
<tr><td>Lorem ipsum</td><td>Dolor</td><td>Sit</td><td>Amet consectetur</td></tr>
<tr><td>Lorem ipsum</td><td>Dolor</td><td>Sit</td><td>Amet consectetur</td></tr>
<tr><td>Lorem ipsum</td><td>Dolor</td><td>Sit</td><td>Amet consectetur</td></tr>
<tr><td>Lorem ipsum</td><td>Dolor</td><td>Sit</td><td>Amet consectetur</td></tr>
<tr><td>Lorem ipsum</td><td>Dolor</td><td>Sit</td><td>Amet consectetur</td></tr>
<tr><td>Lorem ipsum</td><td>Dolor</td><td>Sit</td><td>Amet consectetur</td></tr>
<tr><td>Lorem ipsum</td><td>Dolor</td><td>Sit</td><td>Amet consectetur</td></tr>
<tr><td>Lorem ipsum</td><td>Dolor</td><td>Sit</td><td>Amet consectetur</td></tr>
</tbody>
</table>
</div>
Faux bottom caption
</div>
</div>
<tbody>
दुर्भाग्य से उपयोग नहीं कर सकते ।