100% चौड़ाई तालिका अतिप्रवाह div कंटेनर है


137

मैं एक html तालिका है कि यह माता पिता के कंटेनर बह निकला है के साथ मुद्दों कर रहा हूँ।

.page {
    width: 280px;
    border:solid 1px blue;
}

.my-table {
    word-wrap: break-word; 
}

.my-table td {
    border:solid 1px #333;
}
<div class="page">
    <table class="my-table">
        <tr>
            <th>Header Text</th>
            <th>Col 1</th>
            <th>Col 2</th>
            <th>Col 3</th>
            <th>Col 4</th>
            <th>Header Text</th>
        </tr>
        <tr>
            <td>An archipelago is a chain or cluster of islands. The word archipelago is derived from the Greek ἄρχι- – arkhi and πέλαγος – pélagosthrough the Italian arcipelago. In Italian, possibly following a tradition of antiquity, the Arcipelago (from medieval Greek *ἀρχιπέλαγος) was the proper name for the Aegean Sea and, later, usage shifted to refer to the Aegean Islands (since the sea is remarkable for its large number of islands). It is now used to refer to any island group or, sometimes, to a sea containing a large number of scattered islands such as the Aegean Sea.[1]</td>
            <td>some data</td>
            <td>some data</td>
            <td>some data</td>
            <td>some data</td>
            <td>An archipelago is a chain or cluster of islands. The word archipelago is derived from the Greek ἄρχι- – arkhi and πέλαγος – pélagosthrough the Italian arcipelago. In Italian, possibly following a tradition of antiquity, the Arcipelago (from medieval Greek *ἀρχιπέλαγος) was the proper name for the Aegean Sea and, later, usage shifted to refer to the Aegean Islands (since the sea is remarkable for its large number of islands). It is now used to refer to any island group or, sometimes, to a sea containing a large number of scattered islands such as the Aegean Sea.[1]</td>
        </tr>
    </table>    
</div>

मैं हेडर टेक्स्ट और टेबल सेल टेक्स्ट दोनों को इस तरह से लपेटने के लिए कैसे मजबूर कर सकता हूं कि यह अपने कंटेनर में ठीक से फिट हो जाए? मैं एक CSS केवल विधि को प्राथमिकता दूंगा, लेकिन यदि आवश्यक हो तो जावास्क्रिप्ट (या jQuery) का उपयोग करने के लिए भी खुला हूं।

जवाबों:


254

विशुद्ध रूप से "div में इसे फिट करें" परिप्रेक्ष्य से, अपनी टेबल क्लास ( jsfiddle ) में निम्नलिखित जोड़ें :

table-layout: fixed;
width: 100%;

वांछित के रूप में अपने कॉलम की चौड़ाई सेट करें; अन्यथा, निश्चित लेआउट एल्गोरिथ्म आपके कॉलम में समान रूप से तालिका की चौड़ाई वितरित करेगा।

त्वरित संदर्भ के लिए, यहाँ टेबल लेआउट एल्गोरिदम हैं, मेरा जोर:

  • निश्चित ( स्रोत )
    इस (तेज) एल्गोरिथ्म के साथ, तालिका का क्षैतिज लेआउट कोशिकाओं की सामग्री पर निर्भर नहीं करता है ; यह केवल तालिका की चौड़ाई, स्तंभों की चौड़ाई और सीमाओं या सेल रिक्ति पर निर्भर करता है।
  • स्वचालित ( स्रोत )
    इस एल्गोरिथ्म में (जिसमें आम तौर पर दो से अधिक पास की आवश्यकता नहीं होती है), तालिका की चौड़ाई उसके स्तंभों की चौड़ाई [, सामग्री द्वारा निर्धारित] (और हस्तक्षेप करने वाली सीमाओं ) द्वारा दी गई है ।

    [...] यह एल्गोरिथ्म अक्षम हो सकता है क्योंकि इसमें अंतिम लेआउट निर्धारित करने से पहले उपयोगकर्ता एजेंट को तालिका में सभी सामग्री तक पहुंच की आवश्यकता होती है और एक से अधिक पास की मांग कर सकते हैं।

प्रत्येक एल्गोरिथ्म के लिए बारीकियों को देखने के लिए स्रोत प्रलेखन पर क्लिक करें।


54

जोड़ने का प्रयास करें

word-break: break-all 

अपने टेबल तत्व पर सीएसएस के लिए।

तालिका कक्षों में शब्दों को तोड़ने के लिए ऐसा मिलेगा कि तालिका अपने div से व्यापक नहीं बढ़ती है, फिर भी तालिका स्तंभ अभी भी गतिशील रूप से हैं। jsfiddle डेमो


10
इससे भी बेहतरword-wrap: break-word;
अपोलो

1
@ अपोलो - सहमत! मैंने अपने मूल jsfiddle डेमो में (साथ ही उत्तर निकाय में लिंक देखें) का उपयोग किया।
जॉन श्नाइडर

1
ब्लिंक ब्राउज़र में word-break: break-wordसबसे अच्छा काम करता है।
वोल्वॉक्स

इसके overflow-wrapबजाय संपत्ति का उपयोग करना बेहतर है , क्योंकि यह मानकीकृत है
रोमाँको

18

जोड़ें display: block;और overflow: auto;करने के लिए .my-table। यह केवल 280pxआपके द्वारा लागू की गई सीमा के कुछ भी काट देगा । उस शब्द के साथ इसे "सुंदर लगने" का कोई तरीका नहीं है, pélagosthroughजो शब्दों की वजह से व्यापक है 280px


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

2

इसमें जोड़ने का प्रयास करें td:

display: -webkit-box; // to make td as block
word-break: break-word; // to make content justify

अतिप्रवाहित tds नई पंक्ति के साथ संरेखित होगा।


1

खैर, अपनी दिक्कतों को देखते हुए, मुझे लगता overflow: scroll;है कि .pageडिव पर सेट करना शायद आपका एकमात्र विकल्प है। 280 px बहुत संकीर्ण है, और आपके फ़ॉन्ट आकार को देखते हुए, शब्द रैपिंग अकेले करने वाला नहीं है। कुछ शब्द बस लंबे हैं और लिपटे नहीं जा सकते। आप या तो अपने फ़ॉन्ट आकार को बहुत कम कर सकते हैं या अतिप्रवाह के साथ जा सकते हैं: स्क्रॉल करें।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.