दिलचस्प पोस्ट
सर्वर पर जाने के लिए jqGrid पुनः लोड कैसे करें? ऑब्जेक्ट के भीतर ऑब्जेक्ट प्रॉपर्टी एक्सेस करें क्या पेशेवरों और विपक्ष: सिर में जावास्क्रिप्ट डाल रहा है और शरीर के करीब होने से पहले ही लगाया जा सकता है इकाई फ़्रेमवर्क (ईएफ) कोड प्रथम कैसकेड एक-से-शून्य-या-एक संबंध के लिए हटाएं बाश में एक कमांड के साथ शैल चर के लिए डिफ़ॉल्ट मान असाइन करना विजुअल स्टूडियो में सी ++ फ़ाइल के लिए #include पदानुक्रम को प्रदर्शित करना दो स्टैक का प्रयोग करके कतार कैसे कार्यान्वित करें? ओपनसीवी में जुड़े घटक "अनुपस्थित रिटर्न स्टेटमेंट" के भीतर अगर / के लिए / जबकि सीएसएस में पीएनजी छवि के लिए ड्रॉप छाया एंड्रॉइड: एक कोण से छवि दृश्य में छवि को घुमाएं विम में regex मैच छोड़कर सब कुछ निकालें Regex के साथ बैकस्लैश से बच नहीं सकता है? समय प्राप्त करने के लिए इंटरनेट टाइम सर्वर का उपयोग कैसे करें? Numpy में फ़्लोट की एक सरणी में तारों की सरणी कैसे परिवर्तित करें?

मैं एक टेबल की शरीर को कैसे स्क्रॉल कर सकता हूं लेकिन अपने सिर को जगह में रख सकता हूं?

मैं एक पृष्ठ लिख रहा हूं जहां एक सेट की मात्रा को बनाए रखने के लिए मुझे HTML तालिका की आवश्यकता है मुझे हर समय वहां रहने के लिए मेज के शीर्ष पर हेडर की आवश्यकता होती है, लेकिन मुझे तालिका के शरीर की भी ज़रूरत पड़ती है चाहे कितनी पंक्तियाँ तालिका में जोड़ दी जाए। एक्सेल का एक छोटा संस्करण सोचें यह एक सरल कार्य जैसा दिखता है, लेकिन वेब पर मेरे पास लगभग हर समाधान में कुछ दोष है। इसे कैसे हल किया जा सकता है?

वेब के समाधान से एकत्रित समाधान "मैं एक टेबल की शरीर को कैसे स्क्रॉल कर सकता हूं लेकिन अपने सिर को जगह में रख सकता हूं?"

मुझे एक ही जवाब मिला। मैंने पाया सबसे अच्छा उदाहरण http://www.cssplay.co.uk/menu/tablescroll.html – मैंने उदाहरण # 2 पाया मेरे लिए अच्छी तरह से काम किया है आपको जावा स्क्रिप्ट के साथ भीतरी तालिका की ऊंचाई निर्धारित करनी होगी, शेष सीएसएस है।

मैंने डेटाटाबल को काफी लचीला होना पाया हालांकि इसकी डिफ़ॉल्ट संस्करण jquery पर आधारित है, वहाँ भी एक AngularJs प्लगइन है ।

मैंने सीन हडी के समान प्रश्न का उत्कृष्ट समाधान देखा और कुछ संपादनों को बनाने की स्वतंत्रता को देखा:

  • आईडी के बजाय कक्षाओं का उपयोग करें, इसलिए एक पृष्ठ पर एकाधिक तालिकाओं के लिए एक jQuery स्क्रिप्ट का पुन: उपयोग किया जा सकता है
  • कैप्शन, थीड, टिफूट और टीडी जैसे अर्थपूर्ण HTML तालिका तत्वों के लिए समर्थन जोड़ा गया
  • स्क्रॉलबार को वैकल्पिक बनाया गया है, इसलिए यह स्क्रॉल करने योग्य ऊँचाई की तुलना में "छोटी" तालिका के लिए नहीं दिखाई देगा
  • तालिका के दाहिने किनारे तक स्क्रॉलबार को लाने के लिए समायोजित स्क्रोलिंग डिवा की चौड़ाई
  • मेड अवधारणा द्वारा सुलभ
    • इंजेक्शन स्थैतिक तालिका शीर्ष पर Aria-hidden = "true" का उपयोग करना
    • और जगह में मूल निष्ठा छोड़ने, बस jQuery के साथ छिपा हुआ है और सेट aria-hidden="false"
  • विभिन्न आकारों के साथ कई तालिकाओं का उदाहरण दिखाया गया

शॉन भारी भारोत्तोलन किया, यद्यपि। मैट बर्लैंड को धन्यवाद, यह भी बताते हुए कि पैदल चलने के लिए सहायता की ज़रूरत है

कृपया http://jsfiddle.net/jhfrench/eNP2N/ पर अपने लिए देखें

क्या आपने थिड और टिडी का उपयोग करने की कोशिश की है, और ओवरफ्लो वाले टॉकी पर एक निश्चित ऊँचाई निर्धारित की है: स्क्रॉल करें?

आपके लक्षित ब्राउज़र्स क्या हैं?

संपादित करें: फ़ायरफ़ॉक्स में (लगभग) काम किया – ऊर्ध्वाधर स्क्रॉलबार के अलावा एक क्षैतिज स्क्रॉलबार की आवश्यकता के कारण – युक। IE बस प्रत्येक टीडी की ऊंचाई को निर्धारित करता है कि मैंने कितने लोगों की ऊंचाई तय की थी यहाँ सबसे अच्छा मैं साथ आ सकता है:

 <html> <head> <title>Blah</title> <style type="text/css"> table { width:300px; } tbody { height:10em; overflow:scroll;} td { height:auto; } </style> </head> <body> <table> <thead> <tr> <th>One</th><th>Two</th> </td> </tr> </thead> <tbody> <tr><td>Data</td><td>Data</td></tr> <tr><td>Data</td><td>Data</td></tr> <tr><td>Data</td><td>Data</td></tr> <tr><td>Data</td><td>Data</td></tr> <tr><td>Data</td><td>Data</td></tr> <tr><td>Data</td><td>Data</td></tr> <tr><td>Data</td><td>Data</td></tr> <tr><td>Data</td><td>Data</td></tr> <tr><td>Data</td><td>Data</td></tr> <tr><td>Data</td><td>Data</td></tr> <tr><td>Data</td><td>Data</td></tr> <tr><td>Data</td><td>Data</td></tr> <tr><td>Data</td><td>Data</td></tr> <tr><td>Data</td><td>Data</td></tr> <tr><td>Data</td><td>Data</td></tr> </tbody> </table> </body> </html> 

आपको क्या चाहिए:

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 } 

(ध्यान दें कि, इस तकनीक का उपयोग करके, अब आप पंक्तियों के बीच में स्पैन नहीं कर पाएंगे)।

एक बार ऐसा करने के बाद, आप कॉलम की चौड़ाई को दोनों ही वही और 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 } 

यहां एक डेमो देखें, इस सवाल का जवाब से फंस गया।

संपादित करें: यह एक बहुत पुराना उत्तर है और यह समृद्धि के लिए है कि सिर्फ यह दिखाने के लिए कि इसे 2000 में एक बार वापस समर्थन दिया गया था, लेकिन गिरा दिया क्योंकि 2010 में ब्राउज़र की रणनीति W3C के विनिर्देशों का सम्मान करना थी, भले ही कुछ विशेषताएं हटा दी गईं: निश्चित शीर्ष लेख के साथ स्क्रॉल तालिका / पाद लेख कपटपूर्ण रूप से HTML5 से पहले निर्दिष्ट किया गया था


बुरी खबर

दुर्भाग्यवश, फिक्स्ड thead / tfoot साथ स्क्रॉल करने योग्य टेबल को संभालने का कोई शानदार तरीका नहीं है क्योंकि एचटीएमएल / सीएसएस विनिर्देश इस सुविधा के बारे में बहुत स्पष्ट नहीं हैं ।

स्पष्टीकरण

यद्यपि एचटीएमएल 4.01 विशिष्टता कहते हैं कि thead / tfoot को स्क्रॉल करने के लिए इस्तेमाल किया गया है ( tbody tfoot / tbody )

तालिका पंक्तियां […] THEAD, TFOOT और TBODY तत्वों का उपयोग करके […] समूहीकृत किए जा सकते हैं। यह डिवीजन उपयोगकर्ता एजेंटों को मेज प्रमुख और पैर की स्वतंत्र रूप से टेबल निकायों के स्क्रोलिंग का समर्थन करने में सक्षम बनाता है

लेकिन एफएफ 3.6 पर काम करने योग्य तालिका फीचर को एफएफ 3.7 में हटा दिया गया है क्योंकि इसे बग के रूप में माना जाता है क्योंकि एचटीएमएल / सीएसएस विनिर्देशों के अनुरूप नहीं। यह देखें और एफएफ कीड़े पर टिप्पणी।

मोज़िला डेवलपर नेटवर्क टिप

नीचे स्क्रॉल करने योग्य तालिका के लिए MDN उपयोगी युक्तियों का एक सरलीकृत संस्करण है
यह संग्रहित पृष्ठ या वर्तमान फ़्रेंच संस्करण देखें

 <style type="text/css"> table { border-spacing: 0; /* workaround */ } tbody { height: 4em; /* define the height */ overflow-x: hidden; /* esthetics */ overflow-y: auto; /* allow scrolling cells */ } td { border-left: 1px solid blue; /* workaround */ border-bottom: 1px solid blue; /* workaround */ } </style> <table> <thead><tr><th>Header <tfoot><tr><th>Footer <tbody> <tr><td>Cell 1 <tr><td>Cell 2 <tr><td>Cell 3 <tr><td>Cell 4 <tr><td>Cell 5 <tr><td>Cell 6 <tr><td>Cell 7 <tr><td>Cell 8 <tr><td>Cell 9 <tr><td>Cell 10 <tr><td>Cell 11 <tr><td>Cell 12 <tr><td>Cell 13 <tr><td>Cell 14 </tbody> </table> 

हालांकि एमडीएन यह भी कहता है कि यह एफएफ पर अधिक काम नहीं करता है 🙁
मैंने भी IE8 => तालिका पर परीक्षण किया है या तो स्क्रॉल करने योग्य नहीं है: – ((

सुनिश्चित नहीं है कि कोई भी इस पर अभी भी देख रहा है, लेकिन जिस तरह से मैंने पहले यह किया है, वह एक मूल तालिका प्रदर्शित करने के लिए दो तालिकाओं का उपयोग करना है – पहले सिर्फ मूल तालिका शीर्षक रेखा और कोई तालिका निकाय पंक्तियां (या कोई खाली शरीर पंक्ति यह मान्य है)।

दूसरा एक अलग डिवेल में है और उसका कोई शीर्षक नहीं है और केवल मूल तालिका बॉडी पंक्तियां हैं अलग div तब स्क्रॉल किया जाता है

इसकी डिवीज़ में दूसरी तालिका एचटीएमएल में पहले तालिका के ठीक नीचे रखी गई है और यह एक निश्चित शीर्षक और एक स्क्रॉल करने वाला निचला खंड के साथ दिखता है। मैंने सफारी, फ़ायरफ़ॉक्स और आईई (स्प्रिंग 2010 में प्रत्येक के नवीनतम संस्करण) में इसका परीक्षण किया है लेकिन यह उन सभी में काम किया है।

यह एकमात्र मुद्दा था कि पहली तालिका एक शरीर (W3.org सत्यापनकर्ता – एक्सएचटीएमएल 1.0 सख्त) के बिना मान्य नहीं होगी, और जब मैंने कोई भी सामग्री नहीं जोड़ा, तो यह एक खाली पंक्ति का कारण बनती है आप इसे दृश्यमान नहीं बनाने के लिए सीएसएस का उपयोग कर सकते हैं, लेकिन यह पृष्ठ पर अभी भी जगह लेता है।

यह समाधान क्रोम 35, फ़ायरफ़ॉक्स 30 और आईई 11 में काम करता है (अन्य संस्करणों का परीक्षण नहीं किया गया है)

इसका शुद्ध सीएसएस: http://jsfiddle.net/ffabreti/d4sope1u/

सब कुछ प्रदर्शित करने के लिए सेट है: ब्लॉक, टेबल की ऊंचाई की आवश्यकता है:

  table { overflow: scroll; display: block; /*inline-block*/ height: 120px; } thead > tr { position: absolute; display: block; padding: 0; margin: 0; top: 0; background-color: gray; } tbody > tr:nth-of-type(1) { margin-top: 16px; } tbody tr { display: block; } td, th { width: 70px; border-style:solid; border-width:1px; border-color:black; } 

इससे हमारे बड़े आवेदनों के लिए इस तरह के ग्रिड को लागू करने की कोशिश में मुझे बहुत सिरदर्द लग गए। मैंने सभी विभिन्न तकनीकों की कोशिश की, लेकिन उनमें से प्रत्येक समस्याएं थीं। सबसे निकटतम मैं आया था jQuery प्लगइन जैसे फ़्लेकलग्रीड (विकल्प के लिए http://www.ajaxrain.com पर देखें ), लेकिन यह 100% विस्तृत तालिकाओं का समर्थन नहीं करता है जो कि मुझे क्या चाहिए

जो कुछ मैं कर रहा था वह अपना ही रोलिंग कर रहा था; फ़ायरफ़ॉक्स tbody तत्वों को स्क्रॉल करने का समर्थन करता है, इसलिए मैं ब्राउज़र को tbody और उपयुक्त सीएसएस (सेटिंग ऊँचाई, ओवरफ्लो आदि) का प्रयोग किया, उस पुस्तक को बनाने के लिए अगर आप और अधिक विवरण चाहते हैं तो पूछें, और उसके बाद अन्य ब्राउज़रों के लिए मैंने table-layout: fixed का उपयोग करने के लिए दो अलग-अलग टेबल सेट किए table-layout: fixed जो एक साइजिंग एल्गोरिदम का उपयोग करता है जो बताए गये आकार को उजागर न करने के लिए अनुशासनहीन है (सामान्य टेबल तब फैल जाएगा जब सामग्री फिट होने के लिए बहुत अधिक है) दोनों तालिकाओं को एक समान चौड़ाई देकर मैं अपने कॉलम को लाइन अप करने में सक्षम था। मैंने दूसरे डिवा सेट में एक डिवा सेट में लपेट लिया और मार्जिन इत्यादि के साथ थोड़ा सा जिग्नुओं के साथ देखा और मुझे लगता था कि मैं चाहता था।

क्षमा करें यदि यह उत्तर स्थानों में थोड़ा अस्पष्ट लगता है; मैं जल्दी से लिख रहा हूँ क्योंकि मेरे पास ज्यादा समय नहीं है एक टिप्पणी छोड़ो अगर आप चाहते हैं कि मैं आगे बढ़ूं!

यहां एक ऐसा कोड है जो वास्तव में IE और FF (कम से कम) के लिए काम करता है:

 <html> <head> <title>Test</title> <style type="text/css"> table{ width: 400px; } tbody { height: 100px; overflow: scroll; } div { height: 100px; width: 400px; position: relative; } tr.alt td { background-color: #EEEEEE; } </style> <!--[if IE]> <style type="text/css"> div { overflow-y: scroll; overflow-x: hidden; } thead tr { position: absolute; top: expression(this.offsetParent.scrollTop); } tbody { height: auto; } </style> <![endif]--> </head> <body> <div > <table border="0" cellspacing="0" cellpadding="0"> <thead> <tr> <th style="background: lightgreen;">user</th> <th style="background: lightgreen;">email</th> <th style="background: lightgreen;">id</th> <th style="background: lightgreen;">Y/N</th> </tr> </thead> <tbody align="center"> <!--[if IE]> <tr> <td colspan="4">on IE it's overridden by the header</td> </tr> <![endif]--> <tr> <td>user 1</td> <td>user@user.com</td> <td>1</td> <td>Y</td> </tr> <tr class="alt"> <td>user 2</td> <td>user@user.com</td> <td>2</td> <td>N</td> </tr> <tr> <td>user 3</td> <td>user@user.com</td> <td>3</td> <td>Y</td> </tr> <tr class="alt"> <td>user 4</td> <td>user@user.com</td> <td>4</td> <td>N</td> </tr> <tr> <td>user 5</td> <td>user@user.com</td> <td>5</td> <td>Y</td> </tr> <tr class="alt"> <td>user 6</td> <td>user@user.com</td> <td>6</td> <td>N</td> </tr> <tr> <td>user 7</td> <td>user@user.com</td> <td>7</td> <td>Y</td> </tr> <tr class="alt"> <td>user 8</td> <td>user@user.com</td> <td>8</td> <td>N</td> </tr> </tbody> </table> </div> </body></html> 

मैंने इसे साफ़ करने के लिए मूल कोड को बदल दिया है और इसे भी IE में ठीक काम करना और एफएफ भी लगाया है ..

मूल कोड यहाँ है

यहाँ मेरा विकल्प है यह शीर्ष लेख, शरीर और पाद लेख के लिए अलग-अलग डीआईवी का उपयोग करता है, लेकिन विंडो रीसाइजिंग के लिए सिंक्रनाइज़ किया गया है और खोज, स्क्रॉलिंग, सॉर्टिंग, फ़िल्टरिंग और पोजिशनिंग के साथ:

मेरी सीडी सूची

तालिकाओं को देखने के लिए जैज, शास्त्रीय … बटन पर क्लिक करें यह सेट अप है, ताकि जावास्क्रिप्ट बंद होने पर भी पर्याप्त हो।

IE, एफएफ और वेबकिट (क्रोम, सफारी) पर ठीक लगता है

माफ करना, मैं आपके प्रश्न के सभी उत्तरों को पढ़ता हूं।

हाँ, यहां आप जो चीज चाहते हैं (मैंने पहले से ही किया है)

आप दो तालिकाओं का उपयोग कर सकते हैं, समान स्टाइल के लिए एक ही कक्षा का नाम, केवल एक टेबल सिर के साथ और दूसरी पंक्तियों के साथ। अब इस तालिका को एक डिवा के अंदर डालकर ऊँचाई-वाई: ऑटो या स्क्रॉल के साथ ऊँचाई निर्धारित करें।

ऊपर दिए गए सुझावों के साथ मेरे पास मुख्य समस्या थी tableorter.js में प्लग और एक विशिष्ट अधिकतम आकार के लिए सीमित तालिका के लिए हेडर को फ्लोट करने में सक्षम होने के कारण। मैं अंततः प्लगइन jQuery.floatThead भर में ठोकर खाई जो फ्लोटिंग हेडर प्रदान की और काम जारी रखने के लिए सॉर्टिंग की अनुमति दी।

इसमें एक अच्छा तुलना पृष्ठ भी दिखाया गया है जो समान प्लगिन बनाम दिखाता है।

लाइव जेएसफ़िल्ड

यह केवल एचटीएमएल और सीएसएस के साथ संभव है

 table.scrollTable { border: 1px solid #963; width: 718px; } thead.fixedHeader { display: block; } thead.fixedHeader tr { height: 30px; background: #c96; } thead.fixedHeader tr th { border-right: 1px solid black; } tbody.scrollContent { display: block; height: 262px; overflow: auto; } tbody.scrollContent td { background: #eee; border-right: 1px solid black; height: 25px; } tbody.scrollContent tr.alternateRow td { background: #fff; } thead.fixedHeader th { width: 233px; } thead.fixedHeader th:last-child { width: 251px; } tbody.scrollContent td { width: 233px; } 
 <table cellspacing="0" cellpadding="0" class="scrollTable"> <thead class="fixedHeader"> <tr class="alternateRow"> <th>Header 1</th> <th>Header 2</th> <th>Header 3</th> </tr> </thead> <tbody class="scrollContent"> <tr class="normalRow"> <td>Cell Content 1</td> <td>Cell Content 2</td> <td>Cell Content 3</td> </tr> <tr class="alternateRow"> <td>More Cell Content 1</td> <td>More Cell Content 2</td> <td>More Cell Content 3</td> </tr> <tr class="normalRow"> <td>Even More Cell Content 1</td> <td>Even More Cell Content 2</td> <td>Even More Cell Content 3</td> </tr> <tr class="alternateRow"> <td>And Repeat 1</td> <td>And Repeat 2</td> <td>And Repeat 3</td> </tr> <tr class="normalRow"> <td>Cell Content 1</td> <td>Cell Content 2</td> <td>Cell Content 3</td> </tr> <tr class="alternateRow"> <td>More Cell Content 1</td> <td>More Cell Content 2</td> <td>More Cell Content 3</td> </tr> <tr class="normalRow"> <td>Even More Cell Content 1</td> <td>Even More Cell Content 2</td> <td>Even More Cell Content 3</td> </tr> <tr class="alternateRow"> <td>And Repeat 1</td> <td>And Repeat 2</td> <td>And Repeat 3</td> </tr> <tr class="normalRow"> <td>Cell Content 1</td> <td>Cell Content 2</td> <td>Cell Content 3</td> </tr> <tr class="alternateRow"> <td>More Cell Content 1</td> <td>More Cell Content 2</td> <td>More Cell Content 3</td> </tr> <tr class="normalRow"> <td>Even More Cell Content 1</td> <td>Even More Cell Content 2</td> <td>Even More Cell Content 3</td> </tr> <tr class="alternateRow"> <td>And Repeat 1</td> <td>And Repeat 2</td> <td>And Repeat 3</td> </tr> <tr class="normalRow"> <td>Cell Content 1</td> <td>Cell Content 2</td> <td>Cell Content 3</td> </tr> <tr class="alternateRow"> <td>More Cell Content 1</td> <td>More Cell Content 2</td> <td>More Cell Content 3</td> </tr> <tr class="normalRow"> <td>Even More Cell Content 1</td> <td>Even More Cell Content 2</td> <td>Even More Cell Content 3</td> </tr> <tr class="alternateRow"> <td>And Repeat 1</td> <td>And Repeat 2</td> <td>And Repeat 3</td> </tr> <tr class="normalRow"> <td>Cell Content 1</td> <td>Cell Content 2</td> <td>Cell Content 3</td> </tr> <tr class="alternateRow"> <td>More Cell Content 1</td> <td>More Cell Content 2</td> <td>More Cell Content 3</td> </tr> <tr class="normalRow"> <td>Even More Cell Content 1</td> <td>Even More Cell Content 2</td> <td>Even More Cell Content 3</td> </tr> <tr class="alternateRow"> <td>And Repeat 1</td> <td>And Repeat 2</td> <td>And Repeat 3</td> </tr> <tr class="normalRow"> <td>Cell Content 1</td> <td>Cell Content 2</td> <td>Cell Content 3</td> </tr> <tr class="alternateRow"> <td>More Cell Content 1</td> <td>More Cell Content 2</td> <td>More Cell Content 3</td> </tr> <tr class="normalRow"> <td>Even More Cell Content 1</td> <td>Even More Cell Content 2</td> <td>Even More Cell Content 3</td> </tr> <tr class="alternateRow"> <td>And Repeat 1</td> <td>And Repeat 2</td> <td>And Repeat 3</td> </tr> <tr class="normalRow"> <td>Cell Content 1</td> <td>Cell Content 2</td> <td>Cell Content 3</td> </tr> <tr class="alternateRow"> <td>More Cell Content 1</td> <td>More Cell Content 2</td> <td>More Cell Content 3</td> </tr> <tr class="normalRow"> <td>Even More Cell Content 1</td> <td>Even More Cell Content 2</td> <td>Even More Cell Content 3</td> </tr> <tr class="alternateRow"> <td>And Repeat 1</td> <td>And Repeat 2</td> <td>And Repeat 3</td> </tr> <tr class="normalRow"> <td>Cell Content 1</td> <td>Cell Content 2</td> <td>Cell Content 3</td> </tr> <tr class="alternateRow"> <td>More Cell Content 1</td> <td>More Cell Content 2</td> <td>More Cell Content 3</td> </tr> <tr class="normalRow"> <td>Even More Cell Content 1</td> <td>Even More Cell Content 2</td> <td>Even More Cell Content 3</td> </tr> <tr class="alternateRow"> <td>And Repeat 1</td> <td>And Repeat 2</td> <td>And Repeat 3</td> </tr> <tr class="normalRow"> <td>Cell Content 1</td> <td>Cell Content 2</td> <td>Cell Content 3</td> </tr> <tr class="alternateRow"> <td>More Cell Content 1</td> <td>More Cell Content 2</td> <td>More Cell Content 3</td> </tr> <tr class="normalRow"> <td>Even More Cell Content 1</td> <td>Even More Cell Content 2</td> <td>Even More Cell Content 3</td> </tr> <tr class="alternateRow"> <td>And Repeat 1</td> <td>And Repeat 2</td> <td>And Repeat 3</td> </tr> <tr class="normalRow"> <td>Cell Content 1</td> <td>Cell Content 2</td> <td>Cell Content 3</td> </tr> <tr class="alternateRow"> <td>More Cell Content 1</td> <td>More Cell Content 2</td> <td>More Cell Content 3</td> </tr> <tr class="normalRow"> <td>Even More Cell Content 1</td> <td>Even More Cell Content 2</td> <td>Even More Cell Content 3</td> </tr> <tr class="alternateRow"> <td>And Repeat 1</td> <td>And Repeat 2</td> <td>And Repeat 3</td> </tr> <tr class="normalRow"> <td>Cell Content 1</td> <td>Cell Content 2</td> <td>Cell Content 3</td> </tr> <tr class="alternateRow"> <td>More Cell Content 1</td> <td>More Cell Content 2</td> <td>More Cell Content 3</td> </tr> <tr class="normalRow"> <td>Even More Cell Content 1</td> <td>Even More Cell Content 2</td> <td>Even More Cell Content 3</td> </tr> <tr class="alternateRow"> <td>End of Cell Content 1</td> <td>End of Cell Content 2</td> <td>End of Cell Content 3</td> </tr> </tbody> </table> 

अगर जावास्क्रिप्ट का उपयोग करना ठीक है तो मेरा समाधान है एक टेबल बनाओ, सभी कॉलम पर निर्धारित चौड़ाई (पिक्सल!), टेबल को स्क्रॉल करें और सीएसएस या स्टाइल में यह जावास्क्रिप्ट + जेक्वियर 1.4.x सेट ऊँचाई जोड़ें!

में परीक्षण किया गया: ओपेरा, क्रोम, सफारी, एफएफ, आईई 5.5 ( एपिक स्क्रिप्ट विफल ), आईई 6, आईई 7, आईई 8, आईई 9

 //Usage add Scrollify class to a table where all columns (header and body) have a fixed pixel width $(document).ready(function () { $("table.Scrollify").each(function (index, element) { var header = $(element).children().children().first(); var headerHtml = header.html(); var width = $(element).outerWidth(); var height = parseInt($(element).css("height")) - header.outerHeight(); $(element).height("auto"); header.remove(); var html = "<table style=\"border-collapse: collapse;\" border=\"1\" rules=\"all\" cellspacing=\"0\"><tr>" + headerHtml + "</tr></table><div style=\"overflow: auto;border:0;margin:0;padding:0;height:" + height + "px;width:" + (parseInt(width) + scrollbarWidth()) + "px;\">" + $(element).parent().html() + "</div>"; $(element).parent().html(html); }); }); //Function source: http://www.fleegix.org/articles/2006-05-30-getting-the-scrollbar-width-in-pixels //License: Apache License, version 2 function scrollbarWidth() { var scr = null; var inn = null; var wNoScroll = 0; var wScroll = 0; // Outer scrolling div scr = document.createElement('div'); scr.style.position = 'absolute'; scr.style.top = '-1000px'; scr.style.left = '-1000px'; scr.style.width = '100px'; scr.style.height = '50px'; // Start with no scrollbar scr.style.overflow = 'hidden'; // Inner content div inn = document.createElement('div'); inn.style.width = '100%'; inn.style.height = '200px'; // Put the inner div in the scrolling div scr.appendChild(inn); // Append the scrolling div to the doc document.body.appendChild(scr); // Width of the inner div sans scrollbar wNoScroll = inn.offsetWidth; // Add the scrollbar scr.style.overflow = 'auto'; // Width of the inner div width scrollbar wScroll = inn.offsetWidth; // Remove the scrolling div from the doc document.body.removeChild( document.body.lastChild); // Pixel width of the scroller return (wNoScroll - wScroll); } 

संपादित करें: फिक्स्ड ऊंचाई

मैं जावास्क्रिप्ट (कोई लाइब्रेरी नहीं) और सीएसएस – पृष्ठ के साथ टेबल बॉडी स्क्रॉल करता हूं और तालिका को चौड़ाई या ऊंचाई तय नहीं करना पड़ता है, हालांकि प्रत्येक कॉलम में चौड़ाई होना चाहिए। आप सॉर्टिंग कार्यक्षमता भी रख सकते हैं।

मूल रूप से:

  1. एचटीएमएल में, टेबल हेडर पंक्ति और टेबल बॉडी की स्थिति में कंटेनर डिवाइज़ बनाएं, टेबल मंडल को छिपाने के लिए एक "मुखौटा" डिवेल भी बनाएं, क्योंकि यह हैडर को पिछले स्क्रॉल करता है

  2. सीएसएस में, टेबल भागों को ब्लॉक में कनवर्ट करें

  3. जावास्क्रिप्ट में, मेज की चौड़ाई प्राप्त करें और मुखौटा की चौड़ाई का मिलान करें … पृष्ठ सामग्री की ऊंचाई प्राप्त करें … उपाय स्क्रॉल स्थिति … तालिका शीर्ष लेख पंक्ति स्थिति और मुखौटा ऊंचाई सेट करने के लिए सीएसएस को हेरफेर करें

यहां जावास्क्रिप्ट और एक जेएसफ़ाल्ड डेमो है

 // get table width and match the mask width function setMaskWidth() { if (document.getElementById('mask') !==null) { var tableWidth = document.getElementById('theTable').offsetWidth; // match elements to the table width document.getElementById('mask').style.width = tableWidth + "px"; } } function fixTop() { // get height of page content function getScrollY() { var y = 0; if( typeof ( window.pageYOffset ) == 'number' ) { y = window.pageYOffset; } else if ( document.body && ( document.body.scrollTop) ) { y = document.body.scrollTop; } else if ( document.documentElement && ( document.documentElement.scrollTop) ) { y = document.documentElement.scrollTop; } return [y]; } var y = getScrollY(); var y = y[0]; if (document.getElementById('mask') !==null) { document.getElementById('mask').style.height = y + "px" ; if (document.all && document.querySelector && !document.addEventListener) { document.styleSheets[1].rules[0].style.top = y + "px" ; } else { document.styleSheets[1].cssRules[0].style.top = y + "px" ; } } } window.onscroll = function() { setMaskWidth(); fixTop(); } 

मेरे लिए, स्क्रॉलिंग से संबंधित कुछ भी वास्तव में काम नहीं किया जब तक मैं तालिका सीएसएस से चौड़ाई निकाल नहीं पाता। मूल रूप से, तालिका सीएसएस इस तरह देखा:

 .table-fill { background: white; border-radius:3px; border-collapse: collapse; margin: auto; width: 100%; max-width: 800px; padding:5px; box-shadow: 0 5px 10px rgba(0, 0, 0, 0.1); animation: float 5s infinite; } 

जैसे ही मैंने चौड़ाई निकाल दी: 100%; सभी स्क्रॉलिंग फीचर्स काम करना शुरू कर दिए