टेबल कॉलम आकार


102

में Bootstrap 3, मैं इच्छानुसार तालिका कॉलमों में टैगों col-sm-xxको लागू कर सकता हूं । हालाँकि यह बूटस्ट्रैप 4 में काम नहीं करता है। मैं बूटस्ट्रैप 4 में ऐसा कुछ कैसे प्राप्त कर सकता हूं?ththead

<thead>
<th class="col-sm-3">3 columns wide</th>
<th class="col-sm-5">5 columns wide</th>
<th class="col-sm-4">4 columns wide</th>
</thead>

कोडवर्ड को देखते हुए यह ठीक से आकार नहीं देता है, खासकर यदि आप तालिका में कुछ डेटा जोड़ते हैं। देखें कि यह कैसे चलता है:

<div class="container" style="border: 1px solid black;">
    <table class="table table-bordered">
    <thead>
        <tr class="row">
            <th class="col-sm-3">3 columns wide</th>
            <th class="col-sm-5">5 columns wide</th>
            <th class="col-sm-4">4 columns wide</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>123</td>
            <td>456</td>
            <td>789</td>
        </tr>
    </tbody>
</table>
</div>

1
इस प्रश्न के परिशिष्ट के रूप में: यदि आपके पास बूटस्ट्रैप 4 तालिकाओं को प्रदर्शित करने के लिए लंबी सामग्री (जैसे बहुत लंबी URL) है, तो नीचे दिए गए जवाब के साथ भी बढ़िया समाधान नहीं है। या तो एक फ्लेक्स-पंक्ति या पंक्ति / कॉल समाधान का उपयोग करके अतिप्रवाह और टेक्स्ट-रैप के साथ बेहतर काम करना शुरू हो जाता है
किलरपिक्सलर

जवाबों:


161

अपडेटेड 2018

सुनिश्चित करें कि आपकी तालिका में tableकक्षा शामिल है । ऐसा इसलिए है क्योंकि बूटस्ट्रैप 4 टेबल "ऑप्ट-इन" हैं, इसलिए tableकक्षा को जानबूझकर तालिका में जोड़ा जाना चाहिए।

http://codeply.com/go/zJLXypKZxL

बूटस्ट्रैप 3.x में टेबल सेल्स को रीसेट करने के लिए कुछ CSS भी थे ताकि वे फ्लोट न करें।

table td[class*=col-], table th[class*=col-] {
    position: static;
    display: table-cell;
    float: none;
}

मुझे नहीं पता कि यह बूटस्ट्रैप 4 अल्फा क्यों नहीं है, लेकिन इसे अंतिम रिलीज में जोड़ा जा सकता है। इस सीएसएस को जोड़ने से सभी कॉलमों को thead.. में तय चौड़ाई का उपयोग करने में मदद मिलेगी ।

बूटस्ट्रैप 4 अल्फा 2 डेमो


अद्यतन (बूटस्ट्रैप 4.0.0 के रूप में)

अब जबकि बूटस्ट्रैप 4 फ्लेक्सबॉक्स है, टेबल सेल्स जोड़ते समय सही चौड़ाई नहीं मानेंगे col-*d-inline-blockस्तंभों के फ्लेक्स: डिफ़ॉल्ट डिस्प्ले को रोकने के लिए टेबल सेल पर क्लास का उपयोग करने के लिए एक वर्कअराउंड है ।

बीएस 4 में एक अन्य विकल्प चौड़ाई के लिए साइज़िंग बर्तनों की कक्षाओं का उपयोग करना है ...

<thead>
     <tr>
           <th class="w-25">25</th>
           <th class="w-50">50</th>
           <th class="w-25">25</th>
     </tr>
</thead>

बूटस्ट्रैप 4 अल्फा 6 डेमो

अंत में, आप d-flexतालिका पंक्तियों (tr), और col-*स्तंभों (th, td) पर ग्रिड कक्षाओं में उपयोग कर सकते हैं ...

<table class="table table-bordered">
        <thead>
            <tr class="d-flex">
                <th class="col-3">25%</th>
                <th class="col-3">25%</th>
                <th class="col-6">50%</th>
            </tr>
        </thead>
        <tbody>
            <tr class="d-flex">
                <td class="col-sm-3">..</td>
                <td class="col-sm-3">..</td>
                <td class="col-sm-6">..</td>
            </tr>
        </tbody>
    </table>

बूटस्ट्रैप 4.0.0 (स्थिर) डेमो

नोट: TR को प्रदर्शित करने के लिए बदलना: फ्लेक्स सीमाओं को बदल सकता है


वास्तव में यह ठीक से आकार नहीं करता है। यह देखें कि क्या आप कुछ सीमाओं को जोड़कर देखते हैं कि आकार कैसे होता है और जब आप शरीर में एक पंक्ति जोड़ते हैं। मैंने कोड को प्रश्न में डाल दिया
किलरपिक्सलर

यदि आपके कॉलम में ओवरफ्लोइंग कंटेंट है तो आपका बीएस 4-ए 6 उदाहरण काम नहीं करता है क्योंकि अन्य कॉलम विस्तारित नहीं होते हैं। एक कॉलम में कुछ लोरेम इप्सम चिपकाने की कोशिश करें।
किलरपिक्सलर

1
आपके समाधान ने काम किया। मेरे मामले में, मुझे नकारात्मक गद्दी से बचने के लिए tr में no-gutters जोड़ने की आवश्यकता थी jsfiddle.net/Vimalan/xhvdcasn
विमला जया गणेश

हाँ, w-25, w-50, और w-75वर्गों बूटस्ट्रैप के साथ काम 4. धन्यवाद!
olidem

26

एक अन्य विकल्प तालिका पंक्ति में फ्लेक्स स्टाइल लागू करना है, और col-classesटेबल हेडर / टेबल डेटा तत्वों को जोड़ना है :

<table>
  <thead>
    <tr class="d-flex">
      <th class="col-3">3 columns wide header</th>
      <th class="col-sm-5">5 columns wide header</th>
      <th class="col-sm-4">4 columns wide header</th>
    </tr>
  </thead>
  <tbody>
    <tr class="d-flex">
      <td class="col-3">3 columns wide content</th>
      <td class="col-sm-5">5 columns wide content</th>
      <td class="col-sm-4">4 columns wide content</th>
    </tr>
  </tbody>
</table>

काम करता है लेकिन कक्षा के vertical-align: middleसाथ काम नहीं करता है d-flex
ईव

वर्टिकल अलाइनमेंट वास्तव में फ्लेक्सबॉक्स लेआउट पर काम नहीं करता है। का उपयोग करें align-items: baseline। फ्लेक्सबॉक्स के बारे में अधिक जानने के लिए, इस गाइड को
याकूब वैन

10

इससे पहले कि मैंने @ florian_korner की पोस्ट देखी, मैंने अपनी आवश्यकताओं के अनुसार बूटस्ट्रैप 4.1.1 जारी किया। बहुत समान दिखता है।

यदि आप sass का उपयोग करते हैं तो आप इस स्निपेट को अपने बूटस्ट्रैप के अंत में पेस्ट कर सकते हैं। यह क्रोम, IE और किनारे के लिए समस्या को ठीक करने के लिए लगता है। फायरफॉक्स में कुछ भी टूटता नहीं दिख रहा है।

@mixin make-td-col($size, $columns: $grid-columns) {
    width: percentage($size / $columns);
}

@each $breakpoint in map-keys($grid-breakpoints) {
    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);

    @for $i from 1 through $grid-columns {
        td.col#{$infix}-#{$i}, th.col#{$infix}-#{$i} {
            @include make-td-col($i, $grid-columns);
        }
    }
}

या यदि आप बस संकलित सीएसएस उपयोगिता चाहते हैं:

td.col-1, th.col-1 {
  width: 8.33333%; }

td.col-2, th.col-2 {
  width: 16.66667%; }

td.col-3, th.col-3 {
  width: 25%; }

td.col-4, th.col-4 {
  width: 33.33333%; }

td.col-5, th.col-5 {
  width: 41.66667%; }

td.col-6, th.col-6 {
  width: 50%; }

td.col-7, th.col-7 {
  width: 58.33333%; }

td.col-8, th.col-8 {
  width: 66.66667%; }

td.col-9, th.col-9 {
  width: 75%; }

td.col-10, th.col-10 {
  width: 83.33333%; }

td.col-11, th.col-11 {
  width: 91.66667%; }

td.col-12, th.col-12 {
  width: 100%; }

td.col-sm-1, th.col-sm-1 {
  width: 8.33333%; }

td.col-sm-2, th.col-sm-2 {
  width: 16.66667%; }

td.col-sm-3, th.col-sm-3 {
  width: 25%; }

td.col-sm-4, th.col-sm-4 {
  width: 33.33333%; }

td.col-sm-5, th.col-sm-5 {
  width: 41.66667%; }

td.col-sm-6, th.col-sm-6 {
  width: 50%; }

td.col-sm-7, th.col-sm-7 {
  width: 58.33333%; }

td.col-sm-8, th.col-sm-8 {
  width: 66.66667%; }

td.col-sm-9, th.col-sm-9 {
  width: 75%; }

td.col-sm-10, th.col-sm-10 {
  width: 83.33333%; }

td.col-sm-11, th.col-sm-11 {
  width: 91.66667%; }

td.col-sm-12, th.col-sm-12 {
  width: 100%; }

td.col-md-1, th.col-md-1 {
  width: 8.33333%; }

td.col-md-2, th.col-md-2 {
  width: 16.66667%; }

td.col-md-3, th.col-md-3 {
  width: 25%; }

td.col-md-4, th.col-md-4 {
  width: 33.33333%; }

td.col-md-5, th.col-md-5 {
  width: 41.66667%; }

td.col-md-6, th.col-md-6 {
  width: 50%; }

td.col-md-7, th.col-md-7 {
  width: 58.33333%; }

td.col-md-8, th.col-md-8 {
  width: 66.66667%; }

td.col-md-9, th.col-md-9 {
  width: 75%; }

td.col-md-10, th.col-md-10 {
  width: 83.33333%; }

td.col-md-11, th.col-md-11 {
  width: 91.66667%; }

td.col-md-12, th.col-md-12 {
  width: 100%; }

td.col-lg-1, th.col-lg-1 {
  width: 8.33333%; }

td.col-lg-2, th.col-lg-2 {
  width: 16.66667%; }

td.col-lg-3, th.col-lg-3 {
  width: 25%; }

td.col-lg-4, th.col-lg-4 {
  width: 33.33333%; }

td.col-lg-5, th.col-lg-5 {
  width: 41.66667%; }

td.col-lg-6, th.col-lg-6 {
  width: 50%; }

td.col-lg-7, th.col-lg-7 {
  width: 58.33333%; }

td.col-lg-8, th.col-lg-8 {
  width: 66.66667%; }

td.col-lg-9, th.col-lg-9 {
  width: 75%; }

td.col-lg-10, th.col-lg-10 {
  width: 83.33333%; }

td.col-lg-11, th.col-lg-11 {
  width: 91.66667%; }

td.col-lg-12, th.col-lg-12 {
  width: 100%; }

td.col-xl-1, th.col-xl-1 {
  width: 8.33333%; }

td.col-xl-2, th.col-xl-2 {
  width: 16.66667%; }

td.col-xl-3, th.col-xl-3 {
  width: 25%; }

td.col-xl-4, th.col-xl-4 {
  width: 33.33333%; }

td.col-xl-5, th.col-xl-5 {
  width: 41.66667%; }

td.col-xl-6, th.col-xl-6 {
  width: 50%; }

td.col-xl-7, th.col-xl-7 {
  width: 58.33333%; }

td.col-xl-8, th.col-xl-8 {
  width: 66.66667%; }

td.col-xl-9, th.col-xl-9 {
  width: 75%; }

td.col-xl-10, th.col-xl-10 {
  width: 83.33333%; }

td.col-xl-11, th.col-xl-11 {
  width: 91.66667%; }

td.col-xl-12, th.col-xl-12 {
  width: 100%; }

10

d-flexवर्ग का उपयोग करना अच्छी तरह से काम करता है, लेकिन कुछ अन्य गुण vertical-align: middleसंपत्ति की तरह काम नहीं करते हैं।

स्तंभों को आसानी से आकार देने का सबसे अच्छा तरीका widthकेवल theadकोशिकाओं में प्रतिशत के साथ विशेषता का उपयोग करना है ।

<table class="table">
    <thead>
        <tr>
            <th width="25%">25%</th>
            <th width="25%">25%</th>
            <th width="50%">50%</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>25%</td>
            <td>25%</td>
            <td>50%</td>
        </tr>
    </tbody>
</table>

4
सबसे सरल और सबसे अच्छा समाधान, ईमानदारी से। बाकी सब कुछ मेरे लिए बुरी तरह असफल रहा।
जीव

3
नोट <
html

5

अस्वीकरण: यह उत्तर थोड़ा पुराना हो सकता है। चूंकि बूटस्ट्रैप 4 बीटा है। तब से बूटस्ट्रैप बदल गया है।

तालिका स्तंभ आकार वर्ग को इसमें से बदल दिया गया है

<th class="col-sm-3">3 columns wide</th>

सेवा

<th class="col-3">3 columns wide</th>

यह कॉलम की चौड़ाई निर्धारित करने में काम नहीं करता है: codeply.com/go/Utyon2XEB6
Zim


1
अन्य प्रश्न असंबंधित है। मेरे जवाब में बताए अनुसार बीएस 4 अल्फा 6 फ्लेक्सबॉक्स की वजह से कोलम की चौड़ाई टेबल सेल्स पर काम नहीं करती है।
ज़िम

4

मैं बूटस्ट्रैप 4 का उपयोग करके निम्नलिखित कोड का उपयोग करके इस समस्या को हल कर सकता हूं:

<table class="table">
  <tbody>
    <tr class="d-flex">
      <th class="col-3" scope="row">Indicador:</th>
      <td class="col-9">this is my indicator</td>
    </tr>

    <tr class="d-flex">
      <th class="col-3" scope="row">Definición:</th>
      <td class="col-9">This is my definition</td>
    </tr>

  </tbody>
</table>

1

अल्फा 6 के अनुसार आप निम्नलिखित sass फाइल बना सकते हैं:

@each $breakpoint in map-keys($grid-breakpoints) {
  $infix: breakpoint-infix($breakpoint, $grid-breakpoints);

  col, td, th {
    @for $i from 1 through $grid-columns {
        &.col#{$infix}-#{$i} {
          flex: none;
          position: initial;
        }
    }

    @include media-breakpoint-up($breakpoint, $grid-breakpoints) {
      @for $i from 1 through $grid-columns {
        &.col#{$infix}-#{$i} {
          width: 100% / $grid-columns * $i;
        }
      }
    }
  }
}

यह कोड बिल्कुल भी काम नहीं करता है - इसे 1.5 घंटे के लिए डीबग करने की कोशिश की गई है, लेकिन ऐसा करने के लिए sass का मेरा ज्ञान बहुत कमजोर है। Plz अगली बार काम करने के उदाहरण।
स्लोवी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.