2011-02-06 10 views
16

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

उदाहरण में वहाँ table में DATA है, tableborder:1px solid black है और जब रूप में अच्छी तरह (इसलिए white-space:pre) कर्ल से पहुंचाया उत्पादन आसान पार्सिंग के लिए होगा; div केवल सामान्य सीएसएस लेआउट सहायक है, यदि संभव हो तो चलो उससे छुटकारा पाएं!

महत्वपूर्ण हिस्सा है कि यह कोई निश्चित पिक्सेल चौड़ाई लेआउट प्रकार किया जाएगा, और table मामले डेटा में उपलब्ध चौड़ाई की तुलना में छोटे होंगे इतना कक्ष जरूरत नहीं है। तो इसे समेटने के लिए, एक सादा तालिका जो स्क्रीन से अधिक व्यापक नहीं होती है। आदर्श रूप से table तब तक केवल माता-पिता तत्व को तब तक फैलाएगा जब तक कि उस संलग्न तत्व के max-width तक पहुंच न जाए और फिर व्यापक न हो।

Chrome में, कुछ के साथ मैं एक बुराई हैक करने पर विचार, मैं अधिकतम चौड़ाई उपलब्ध पर table रखने के लिए और यदि आवश्यक हो td पर स्क्रॉलबार प्रदर्शित करने के लिए मिला है। हालांकि यह एफएफ के लिए काम नहीं करता है, न ही वह समाधान कुछ है जिसे सही माना जा सकता है।

इस बात का उदाहरण के बाद थोड़ी देर के लिए https://hydra.geht.net/table-quirx.html में पाया जा सकता:

<head> 
<title>Obey max-width for table</title> 
<style> 
.nw    { white-space:nowrap } 
.quirx div  { width:100%; max-width:100%; white-space:pre } 
.quirx td  { max-width:90px; border:1px solid black } 
.quirx td+td { max-width:500px; overflow:auto } 
table.quirx  { width:100%; max-width:100%; border:1px solid black; border-collapse:collapse } 
td    { align:left; max-width:100% } 
</style> 
</head> 
<body> 
<table summary="" class="quirx"><tr><td colspan="3"> 
Just some info 
</td></tr><tr><td>KEY</td><td><div>DATA (which might contain long lines PRE formatted) XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX </div> 
</td></tr></table> 
</body> 
</html> 

ध्यान दें कि "colspan = 3" कोई त्रुटि यहाँ मेरे एप्लिकेशन में, कभी कभी एक तीसरे स्तंभ में नज़र आ सकते, यह नहीं कर सकते table हेडर आउटपुट के समय ज्ञात हो। (कुछ शैली बातें बेमानी भी हैं।)

चाल से ऊपर, कि td के max-width एक साथ हमेशा की तरह स्क्रीन (590px) और table तो दिया width तक फैला है, 100% है जो तुलना में छोटे होते । चूंकि td एस स्क्रीन से बाहर नहीं फैलता है, आंतरिक div की overflow संपत्ति अपेक्षा के अनुसार काम कर सकती है। हालांकि एफएफ में यह इस तरह से काम नहीं करता है, न तो width और न ही max-width (जो शायद उनके inline -स्टैटस के कारण है) के साथ काम नहीं करता है। Chromewidth:100% या इसी तरह td पर और न ही tr तत्वों पर काम नहीं करता है। ध्यान दें कि max-width के साथ width (मुझे उस अंतर को समझ में नहीं आता है) की तुलना में अधिक सुखद टेबल लेआउट मिलता है।

बग है कि यह केवल Chrome में काम करता है, एक और बग है, कि table पूर्ण स्क्रीन-चौड़ाई है कि भले ही अगर वहाँ डेटा प्रदर्शित करने के लिए केवल छोटे है की जरूरत नहीं है का उपयोग करता है इसके अलावा

।सब के बारे में

कुछ नोट:

  • मुझे लगता है कि यह यहाँ एक बहुत ही बुनियादी बात है और मैं हैरान हूँ क्यों यह सीएसएस के साथ व्यक्त करने के लिए इतनी मेहनत लगती
  • एक लक्ष्य यह किसी भी मुक्त रखने के लिए है जावास्क्रिप्ट, इसलिए केवल हैक्स के साथ सीएसएस
  • उपयोगकर्ता 1920px करने के लिए 800px से उदाहरण के लिए विंडो का आकार बदलने कर सकते हैं, या यहां तक ​​कि व्यापक है, और इसलिए table की चौड़ाई स्वचालित रूप से (जावास्क्रिप्ट के बिना) का पालन करेगा
  • यह पाठ पर अच्छा प्रदर्शित करेगा आधारित ब्राउज़र जैसे Lynx और w3m भी
  • आउटपुट आसान पार्सिंग के लिए भी अव्यवस्थित जब curl
  • से पहुंचाया यह प्रमुख 4 पर ठीक से अधिक या कम प्रदर्शित करेगा नहीं होगा (आईई, एफएफ, क्रोम, सफारी)
  • यह नहीं किया जाएगा दूसरों पर तोड़ें (यह बग प्रस्तुत कर सकता है, लेकिन सामग्री छिपी नहीं जानी चाहिए)

मुझे वास्तव में यह नहीं पता कि उसे कैसे संग्रहीत किया जाए। शायद यह एक एफएक्यू है, लेकिन मैं खुद को एक समाधान खोजने में असमर्थ था।

उत्तर

18

(मेरा जवाब एक छोटे से बाद आता है की तुलना में शायद वांछित है, लेकिन शायद यह आप या किसी और से कोई भी-कम ... कुछ मार्कअप (नीचे

मैं सम्मिलित कर रहा करने के लिए उपयोगी हो सकता है) कि मैं प्राप्त करने के लिए मैं क्या लगता है कि आप चाहते हैं HTML/CSS का परीक्षण करने के लिए बनाया।

वहाँ है एक निश्चित चौड़ाई सेल शैली "fixedcell" और तरल पदार्थ चौड़ाई सेल शैली "fluidcell"।

निश्चित चौड़ाई मैं निर्धारित किया है एक निश्चित चौड़ाई (इस उदाहरण के लिए 75 पीएक्स) पर चीजों को बेहतर ढंग से चित्रित करने के लिए सरल।

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

तालिका 100% चौड़ाई होने वाली है, इसलिए यह आवश्यकतानुसार स्क्रीन/फिट करने के लिए विस्तारित होगी। और तालिका की शैली के बारे में महत्वपूर्ण बात तालिका-लेआउट है: निश्चित, यह तालिका को स्वयं की सामग्री (तालिका-लेआउट: ऑटो) के आधार पर स्वत: आकार देने के बजाए पेज के लेआउट का अधिक सही ढंग से पालन करता है। ।

मैंने तालिका और कोशिकाओं की सीमाओं को चित्रित करने में सहायता के लिए कुछ सीमाएं भी शामिल कीं।

<html> 
<head> 
    <title>Table with auto-width sizing and overflow hiding.</title> 
    <style type="text/css"> 
     table {width:100%; border:solid 1px red; table-layout:fixed;} 
     table td {border:solid 1px green;} 
     .fixedcell {width:75px;} 
     .fluidcell {width:auto; overflow:hidden; white-space:nowrap;} 
    </style> 
</head> 
<body> 
    Table with one fluid column: 
    <table> 
     <tr> 
      <td class="fixedcell">row 1</td> 
      <td class="fluidcell">a whole bunch of content could go here and it still needs to fit nice into the cell without mucking things up</td> 
      <td class="fixedcell">fixie</td> 
      <td class="fixedcell">another</td> 
     </tr> 
    </table> 

    Table with two fluid columns: 
    <table> 
     <tr> 
      <td class="fixedcell">row 1</td> 
      <td class="fluidcell">a whole bunch of content could go here and it still needs to fit nice into the cell without mucking things up</td> 
      <td class="fluidcell">blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah</td> 
      <td class="fixedcell">fixie</td> 
      <td class="fixedcell">another</td> 
     </tr> 
    </table> 
</body> 

मैं कई आधुनिक ब्राउज़रों में यह परीक्षण किया है और प्रत्येक में सही ढंग से काम करने के लिए लग रहा था।

पीएस।हालांकि टेबल सामान्य रूप से पृष्ठ लेआउट के लिए नो-नो हैं, सारणी सारणी डेटा लेआउट के लिए सही और प्रोत्साहित हैं।

+0

यह उपयोगी था। मैं मुद्दों में भाग रहा हूं और टेबल-लेआउट खेलने पर प्रतीत होता है। धन्यवाद – huyz

+0

यह अविश्वसनीय रूप से उपयोगी है, धन्यवाद दोस्त –

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