आपको क्या चाहिए:
1) सीमित ऊंचाई का एक टेबल बॉडी है क्योंकि स्क्रॉल केवल तब होता है जब सामग्री स्क्रॉल विंडो से बड़ी होती है। हालाँकि tbody, इसका आकार नहीं हो सकता, और आपको ऐसा करने के लिए इसे प्रदर्शित blockकरना होगा:
tbody {
overflow-y: auto;
display: block;
max-height: 10em; // For example
}
2) पुनः सिंक टेबल हेडर और टेबल बॉडी कॉलम चौड़ाई के रूप में उत्तरार्द्ध को एक blockअसंबंधित तत्व बना देता है। ऐसा करने का एकमात्र तरीका दोनों को समान कॉलम चौड़ाई लागू करके सिंक्रनाइज़ेशन को अनुकरण करना है ।
हालाँकि, चूंकि tbodyस्वयं blockअब एक है, इसलिए यह अब एक जैसा व्यवहार नहीं कर सकता है table। चूंकि आपको अभी भी tableआपको स्तंभों को सही ढंग से प्रदर्शित करने के लिए एक व्यवहार की आवश्यकता है, इसलिए समाधान आपकी प्रत्येक पंक्तियों को व्यक्तिगत रूप से प्रदर्शित करने के लिए पूछना है table:
thead {
display: table;
width: 100%; // Fill the containing table
}
tbody tr {
display: table;
width: 100%; // Fill the containing table
}
(ध्यान दें कि, इस तकनीक का उपयोग करके, आप अब पंक्तियों में स्पैन नहीं कर पाएंगे)।
एक बार यह हो, तो आप स्तंभ चौड़ाई को लागू दोनों में एक ही चौड़ाई कर सकते हैं theadऔर tbody। आप ऐसा नहीं कर सकते:
- प्रत्येक स्तंभ के लिए व्यक्तिगत रूप से (विशिष्ट सीएसएस कक्षाओं या इनलाइन स्टाइल के माध्यम से), जो प्रत्येक तालिका उदाहरण के लिए करने के लिए काफी थकाऊ है;
- सभी कॉलमों के लिए समान रूप से (
th, td { width: 20%; }यदि आपके पास उदाहरण के लिए 5 कॉलम हैं), जो अधिक व्यावहारिक है (प्रत्येक तालिका उदाहरण के लिए चौड़ाई निर्धारित करने की आवश्यकता नहीं है) लेकिन किसी भी कॉलम की गणना के लिए काम नहीं कर सकते
- किसी भी स्तंभ की गणना के लिए समान रूप से, एक निश्चित तालिका लेआउट के माध्यम से।
मुझे अंतिम विकल्प पसंद है, जिसे जोड़ने की आवश्यकता है:
thead {
table-layout: fixed; // Same layout for all cells
}
tbody tr {
table-layout: fixed; // Same layout for all cells
}
th, td {
width: auto; // Same width for all cells, if table has fixed layout
}
यहाँ एक डेमो देखें , इस प्रश्न के उत्तर से कांटा ।