2012-05-31 15 views
7

मुझे एक तालिका चाहिए जो 100% है यदि पृष्ठ जिसमें गतिशील रूप से बनाए गए कॉलम की संख्या हो सकती है। प्रत्येक कॉलम में बहुत लंबे शब्द हो सकते हैं, इतने लंबे समय तक कि वे सभी एक पृष्ठ पर फिट नहीं हो सकते हैं। इसे ठीक करने के लिए मैंने table-layout: fixed का उपयोग किया जिसने पृष्ठ पर दिखाई देने वाली तालिका के सभी कॉलम बनाए। समस्या यह है कि मैं अभी भी प्रत्येक कॉलम की चौड़ाई गतिशील होना चाहता हूं ताकि यदि कॉलम में छोटे शब्द हों तो यह लंबे शब्द के साथ एक से छोटा होना चाहिए।गतिशील कॉलम के साथ तालिका लेकिन लेआउट तय

उदाहरण: jsfiddle

तालिका 1 हमेशा सभी कॉलम दिखाता है लेकिन जब पृष्ठ पर्याप्त चौड़ा होता है तो यह शब्द को तोड़ देता है भले ही अन्य कॉलम में खाली स्थान हो।

तालिका 2 कॉलम से अधिक व्यापक होने पर ठीक काम करता है लेकिन पहला कॉलम अन्य कॉलम को स्क्रीन से बाहर/अन्य वस्तुओं पर धक्का देता है जब खिड़की छोटी होती है।

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

मैं एक जेएस/jQuery समाधान स्वीकार कर सकता हूं लेकिन यदि सीएसएस के साथ यह संभव है तो यह संभव है।

संपादित करें:

छोटे तालिका: नोट: asasdasdasdasdasdasdasdasdasdasdasd एक शब्द है कि क्योंकि तालिका इस से बड़ा नहीं हो सकता है छोटा है है।

+--------------------+----------+---------+ 
|asasdasdasdasdasdasd|qweqweqweq|zxczxczxc| 
|asdasdasdasdasd  |   |   | 
+--------------------+----------+---------+ 

बड़े तालिका: नोट: सभी कॉलम नहीं बराबर आकार के, खासकर वे खाली स्थान के साथ वृद्धि समान रूप से वितरित कर रहे हैं।

+--------------------------------------+-------------+------------+ 
|asasdasdasdasdasdasdasdasdasdasdasd |qweqweqweq |zxczxczxc | 
+--------------------------------------+-------------+------------+ 
+0

क्या मैं समझता हूँ कि आप पाठ रैप चाहते हैं जब सेल में बड़े डेटा है वहाँ और जब डेटा छोटा है यह कोई साथ में फिट करना चाहिए सफेद जगहें? – MSUH

+0

@MSUH मैंने कोशिश करने और स्पष्टीकरण के लिए अपनी पोस्ट संपादित की। मैं लंबे समय तक शब्दों को लपेटना चाहता हूं यदि वे बहुत लंबे हैं। यदि वहां जगह छोड़ी गई है तो इसे टेबल पर समान रूप से वितरित करना होगा। – olofom

उत्तर

1

तो मैं समझता हूँ कि यह एक प्रारंभिक बिंदु हो सकता है:

var tds; 

$("table").each(function() { 

    tds = $("td"); 

    for(var x = 0; x < tds.length; x++){ 
     tds.eq(x).css('max-width', '100px'); 
    } 

}); 
+0

इस समाधान के साथ समस्या यह है कि आप चौड़ाई को पिक्सेल मान पर सेट करते हैं और मुझे नहीं पता कि कितने कॉलम होंगे और वे कितने चौड़े होंगे। 768 पीएक्स की तालिका चौड़ाई वाले 20 कॉलम हो सकते हैं, 1080px की तालिका चौड़ाई वाला दो कॉलम हो सकते हैं ... और यह जेएस सीएसएस के साथ बहुत आसानी से किया जा सकता है: 'तालिका # टी 2 टीडी {अधिकतम-चौड़ाई: 300 पीएक्स; } ':) – olofom

+0

क्या आप किसी तालिका में कॉलम की संख्या और स्क्रीन या दस्तावेज़ की चौड़ाई की गणना कर सकते हैं, और अधिकतम अनुपात चौड़ाई: 100px इस अनुपात के साथ? यह एक समाधान हो सकता है? –

+0

मुझे यकीन नहीं है कि काम करेगा। इस दृश्यदर्शी पर विचार करें: मेरे पास चौड़ाई में 10 कॉलम और 1000 पीएक्स हैं। पहले 9 कॉलमों में केवल 10px की आवश्यकता होती है और 10 वीं आसानी से 910 पीएक्स का उपयोग कर सकते हैं। अधिकतम चौड़ाई क्या होनी चाहिए? वे प्रत्येक 1/10 वें भी हो सकते हैं। तो अधिकतम चौड़ाई 910 पीएक्स या शायद 100 पीएक्स होना चाहिए? – olofom

0

सभी सबसे पहले "तालिका लेआउट: तय" को दूर संपत्ति

निम्नलिखित कोड का प्रयास करें, यह आपके मामले में पूरी तरह से काम करना चाहिए:

$(document).ready(function(){ 

$("table").find('tr').children('td').each(function() { 
    var wdth = $(this).html().length + 10; 
    $(this).css({ 'padding-right': '10px' }, { 'width': wdth + 'px' }); 
    }); 
});  
+0

क्षमा करें, लेकिन यह काम नहीं करेगा। http://stackoverflow.com/a/14765961/1872046 –

संबंधित मुद्दे