2011-01-11 20 views
7

तो मेरे पास हैताला तालिका सेल

<table> 
    <tr> 
     <td></td> 
     <td></td> 
    </tr> 
    <tr> 
     <td></td> 
     <td></td> 
    </tr> 
</table> 

और

table 
    { width: 100%; height: 100%; } 

प्रत्येक कोशिका तालिका की एक समान तिमाही तक ले जाता है, और तालिका खिड़की फिट करने के लिए फैला ।

मैं इन तालिका कोशिकाओं को कोशिकाओं के भीतर सामग्री (अभी भी तालिका के कंटेनर को फ़िट करने के दौरान) फिट करने के लिए खुद को आकार देने से कैसे रोक सकता हूं?

उत्तर

16

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

More info on w3schools

+2

आप सही हैं - यह क्षैतिज चौड़ाई पर काम करता है लेकिन लंबवत नहीं है। मुझे लगता है कि सीएसएस चीजों के सबसे सरल के लिए बेकार है। मैं सिर्फ कैलेंडर बनाने की कोशिश कर रहा हूं! – Nick

+3

लंबवत के लिए कोई समाधान? –

+0

@RomanGaufman मुझे लगता है कि [इस सवाल का मेरा जवाब] (http://stackoverflow.com/a/17429778/49942) वर्टिकल के लिए भी काम करता है। – ChrisW

1

td{ width:50%; } तब तक काम करेगा जब तक टेबल पर्याप्त छोटा न हो जाए।

+0

क्या होगा यदि मैं पहले से पंक्तियों या स्तंभों की संख्या पता नहीं है? मैं प्रत्येक सेल को प्रतिशत चौड़ाई और ऊंचाई देने के लिए जावास्क्रिप्ट का उपयोग कर रहा हूं लेकिन अब यह नहीं कर सकता। – Nick

+0

मैं एक शुद्ध एचटीएमएल/सीएसएस समाधान के बारे में नहीं सोच सकता, आपको शायद जावास्क्रिप्ट की आवश्यकता होगी। आप सीएसएस ओवरफ्लो संपत्ति के साथ खेलने का प्रयास कर सकते हैं। – Jake

2

आप सभी जगह चबाना और सेट किए गए एक एकल कोशिका लेने के लिए कोशिश कर सकते 100% करने के लिए ऊंचाई और चौड़ाई:

<table> 
    <tr> 
     <td>Hi There.</td> 
     <td>x</td> 
    </tr> 
    <tr> 
     <td>Here is some text.</td> 
     <td class="space-hog"></td> 
    </tr> 
</table> 

और कुछ सीएसएस:

table { 
    width: 100%; 
    height: 100%; 
} 
td { 
    white-space: nowrap; 
} 
td.space-hog { 
    width: 100%; 
    height: 100%; 
} 

और एक live example.space-hog इसकी बात करता है, इसलिए white-space: nowrap पर अप्रिय लाइन रैपिंग से बचने के लिए आपको सावधान रहना होगा। यदि आप अंतिम पंक्ति में .space-hog डालते हैं तो आप दिलचस्प भागों को नीचे धक्का देने से बच सकते हैं।

+0

मैं सभी जगहों को लेने के लिए एक सेल प्राप्त करने की कोशिश नहीं कर रहा हूं - मैं सामग्री की परवाह किए बिना कभी भी सेल चौड़ाई और ऊंचाई के बराबर होना चाहता हूं। – Nick

+0

ठीक है, यह मुझे स्पष्ट नहीं था। मुझे नहीं लगता कि सीएसएस में "इन सभी चीजों को एक ही आकार में" कहने का एक तरीका है, आपको कहना है कि "इन सभी चीजों को Wpx चौड़ा और एचपीएक्स लंबा बनाएं" और सर्वर पर या जावास्क्रिप्ट में आयामों की गणना करें। हो सकता है कि प्रश्न में अधिक संदर्भ प्रदान करें और कोई भी पूरी तरह से नए दृष्टिकोण के साथ आ सकता है जो तालिका आकार को पूरी तरह से रोकता है। –

0

शायद overflow:hidden; का उपयोग करने की लाइनों के साथ कुछ?

1

आप प्रत्येक तालिका सेल की सामग्री पर position: absolute का उपयोग कर ऐसा कर सकते हैं: क्योंकि यदि आप करते हैं तो सामग्री का आकार सेल के आकार को प्रभावित नहीं करता है।

ऐसा करने के लिए, आपको तालिका कक्षों को भी स्थिति में रखना होगा (ताकि सामग्री की पूर्ण स्थिति तालिका कक्ष से संबंधित हो) - and/or, to support Firefox, position an extra div within the table cells क्योंकि फ़ायरफ़ॉक्स आपको कोशिकाओं को स्थिति लागू करने की अनुमति नहीं देता है।

उदाहरण के लिए, मैं इस HTML उपयोग कर रहा हूँ:

<td><div class="bigimg"><img src="...."/></div></td> 

निम्नलिखित सीएसएस के साथ, ताकि छवि का आकार सेल जो उसमें शामिल के आकार को प्रभावित नहीं करता:

div.bigimg 
{ 
    height: 100%; 
    width: 100%; 
    position: relative; 
} 
div.bigimg > img 
{ 
    position: absolute; 
    top: 0; 
    left: 0; 
} 

मैं td जो उसमें शामिल के आकार मैच के लिए, क्योंकि मैं जावास्क्रिप्ट का उपयोग कर रहा रन टाइम पर छवियों का आकार करने के लिए अपने कंटेनर, फिट करने के लिए height और 100% को div.bigimg की width सेट जो div.bigimg हैं।

+0

क्या इस बारे में कुछ स्पष्टीकरण है कि इसकी आवश्यकता क्यों होगी? एक 3x3 तालिका आकार बदलने लगती है भले ही छवि पहले से ही तालिका कक्ष के भीतर फिट बैठती है! – ericslaw

+0

@ericslaw मुझे आपकी टिप्पणी/प्रश्न नहीं समझ रहा है। शायद आप इसे एक नए प्रश्न के रूप में पोस्ट कर सकते हैं। – ChrisW

1

मैंने निश्चित तालिका लेआउट के बिना ऐसा करने में कामयाब रहा है। सेल की सीएसएस:

.dataCell { 
    display: table-cell; 
    padding: 2px 15px 2px 15px; 
    white-space: nowrap; 
    text-overflow: ellipsis; 
    overflow: hidden; 
    width: auto; 
    max-width: 1px; 
} 
0

तालिका के स्टाइल को table-layout:fixed; जोड़ें।

यदि आपको लगता है कि यह चौड़ाई को ठीक करने में मदद करता है लेकिन ऊंचाई नहीं, तो ऐसा इसलिए होता है क्योंकि प्रत्येक टीडी सेल में कुछ प्रकार के पैडिंग मौजूद हो सकते हैं। टीडी की स्टाइल में padding:0px; जोड़ें।

0

तुम भी कोशिकाओं एक प्रतिशत करने के लिए, ताकि जवाबदेही बनाए रखने के लिए बंद कर सकते हैं, जैसे:

td:first-child, th:first-child { 
    width: 20%; 
    } 
    // assuming you have 8 remaining columns (20 + 10*8 = 100%) 
    td:not(:first-child), th:not(:first-child) { 
    width: 10%; 
    } 
संबंधित मुद्दे