2012-06-29 14 views
168

निम्नलिखित मार्कअप को देखते हुए, मैं एक सेल (कॉलम में सभी कोशिकाओं) को बल देने के लिए सीएसएस का उपयोग कैसे कर सकता हूं ताकि खिंचाव (जो डिफ़ॉल्ट व्यवहार है) के बजाय सामग्री की चौड़ाई तक फिट हो सके?सामग्री के लिए फ़िट सेल चौड़ाई

<style type="text/css"> 
td.block 
{ 
border: 1px solid black; 
} 
</style> 
<table style="width: 100%;"> 
<tr> 
    <td class="block">this should stretch</td> 
    <td class="block">this should stretch</td> 
    <td class="block">this should be the content width</td> 
</tr> 
</table> 

संपादित करें: मुझे लगता है मैं कठिन चौड़ाई कोड सकता है, लेकिन मैं नहीं बल्कि जो सामग्री जो उस कॉलम में जाना होगा गतिशील है के रूप में ऐसा नहीं होता।

नीचे दी गई छवि को देखते हुए, पहली छवि मार्कअप उत्पन्न करती है। दूसरी छवि वह है जो मैं चाहता हूं।

enter image description here

+0

मुझे आपका प्रश्न नहीं समझ रहा है। क्या आप अंतिम कॉलम को विशिष्ट चौड़ाई के रूप में सीमित करना चाहते हैं? – MetalFrog

+5

@diEcho मैंने सोचा कि यह काफी स्पष्ट था। मैं एक तस्वीर या दो जोड़ दूंगा। – Mansfield

+0

[सीएसएस टेबल कॉलम ऑटोविड्थ] का संभावित डुप्लिकेट (https://stackoverflow.com/questions/4757844/css-table-column-autowidth) – Vadzim

उत्तर

310

मुझे यकीन है कि अगर मैं अपने प्रश्न समझ में नहीं हूँ, लेकिन मैं इस पर एक चाकू ले लेंगे। JSfiddle of the example

HTML:

<table style="width: 100%;"> 
<tr> 
    <td class="block">this should stretch</td> 
    <td class="block">this should stretch</td> 
    <td class="block">this should be the content width</td> 
</tr> 
</table> 

सीएसएस:

td{ 
    border:1px solid #000; 
} 

tr td:last-child{ 
    width:1%; 
    white-space:nowrap; 
} 
+1

आप '

' के बजाय '<टेबल चौड़ाई =" 100% ">' – diEcho

+9

@diEcho मैंने उस भाग को नहीं लिखा, जो कि उदाहरण कोड से था। भले ही, तत्वों पर चौड़ाई विशेषता का उपयोग करना बुरा अभ्यास है। इस त्वरित उदाहरण में, इनलाइन सीएसएस ठीक है, लेकिन इसे एक फ़ाइल में सारणीबद्ध किया जाना चाहिए यदि यह उत्पादन-स्तर कोड था। – MetalFrog

+30

इस आईएमओ को करने का एक क्लीनर तरीका "नोस्ट्रेट" (या ऐसा कुछ) नामक शैली को परिभाषित करना होगा, और फिर सीएसएस में चौड़ाई रखने के लिए केवल nostretch को परिभाषित करें: 1% और नाइट्रैप। फिर अंतिम टीडी में 'class = "nostretch ब्लॉक" होगा। इस तरह आप अपने इच्छित सेल को "nostretch" कर सकते हैं। –

26

max-width:100%; 
white-space:nowrap; 

स्थापना आपकी समस्या का समाधान होगा।

+2

मैंने इसे फ़ायरफ़ॉक्स पर आज़माया और यह काम नहीं किया। – Adam

1

सभी चश्मा के अनुसार सीएसएस चौड़ाई को 1% या 100% तत्व में सेट करना, जो मैं पा सकता हूं, माता-पिता से संबंधित है। यद्यपि लेखन के पल में ब्लिंक रेंडरिंग इंजन (क्रोम) और गेको (फ़ायरफ़ॉक्स) को लगता है कि 1% या 100% (स्तंभों को कम करने या उपलब्ध स्थान को भरने के लिए कॉलम) को अच्छी तरह से संभालने लगता है, यह सभी सीएसएस विनिर्देशों के अनुसार गारंटी नहीं है मैं इसे ठीक से प्रस्तुत करने के लिए मिल सकता है।

एक विकल्प CSS4 फ्लेक्स divs के साथ तालिका को बदलने के लिए है:

https://css-tricks.com/snippets/css/a-guide-to-flexbox/

कि नए ब्राउज़र में काम करता है अर्थात IE11 + लेख के नीचे तालिका देखें।

1

मेरे लिए, यह सबसे अच्छा autofit और मेज और उसके स्तंभों के लिए autoresize है (उपयोग सीएसएस! महत्वपूर्ण ... केवल नहीं के बिना आप कर सकते हैं अगर)

.myclass table { 
    table-layout: auto !important; 
} 

.myclass th, .myclass td, .myclass thead th, .myclass tbody td, .myclass tfoot td, .myclass tfoot th { 
    width: auto !important; 
} 

तालिका के लिए सीएसएस चौड़ाई निर्दिष्ट नहीं है या टेबल कॉलम के लिए। यदि तालिका सामग्री बड़ी है तो यह स्क्रीन आकार पर जायेगी।

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