Bootstrap tablo sütununu içeriğe sığdırmak


85

Bootstrap kullanıyorum ve bir tablo çiziyorum. En sağdaki sütunun içinde bir düğme var ve bunun, söz konusu düğmeye uyması için gereken minimum boyuta düşmesini istiyorum.

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<table class="table table-responsive">
        <tbody>
            <tr>
                <th>Name</th>
                <th>Payment Method</th>
                <th></th>
            </tr>
            <tr>
                <td>Bart Foo</td>
                <td>Visa</td>
                <td><a role="button" class="btn btn-default btn-xs" href="/Payments/View/NnrN_8tMB0CkVXt06nkrYg">View</a></td>
            </tr>
        </tbody>
    </table>

Bu şu şekilde işler:

Tablo Örneği

Bazı kundakçı vurgulamalarıyla, sütun genişliği bu kadar geniş çıkmıştır:

Sütun genişliği

Bu sütun, sayfa daha büyük dinamik genişlik modlarında iken, sayfa ile ölçeklenir. Bunu saf CSS'de nasıl düzelteceğim konusunda bir fikrim var, ancak bu yaklaşımların çoğu muhtemelen sitenin düşük genişlikli sürümlerinde sorunlara neden olacaktır.

Bu sütunun içeriğinin genişliğine kadar aşağı düşmesini nasıl sağlayabilirim?

(Her zamanki gibi - Mevcut önyükleme sınıfları> saf CSS> Javascript)


Bunu gönderdikten sonra, bir düşüncem var - bu sütunu doğru hizalarsam, sanırım bu da aynıdır - diğer sütunlarda boşluğa ihtiyaç duyacak kadar veri varsa, yine de geri çekerler. DÜZENLEME: Doh - bu, birden fazla sütunum olduğunda minimum boyuta indirmem gereken durumlarda çalışmaz.
Octopoid

6
Bu, düzen için doğrudur, ancak tablolar, tablo verileri için kesinlikle uygundur.
Octopoid

2
Tablolar yerine div kullanmalısınız. Daha sonra genişlikleri için sayfa genişliğine uyacak yüzde değerleri atayabilirsiniz.
sqe

6
Yapı için tablolar kullanılmamalıdır . Genellikle tablolara giren veriler için tabloları kullanabilirsiniz. Octopoid, yapı için tablo etiketini kullanmıyor, verileri görüntülemek için kullanılıyor. Tablo etiketinin doğru kullanımıdır.
gewh

Yanıtlar:


158

Tablo hücresi genişliğine içeriğe uyacak bir sınıf oluşturun

.table td.fit, 
.table th.fit {
    white-space: nowrap;
    width: 1%;
}

7
Gah - Bunu bir tdkurala koydum ve sonra onu a'ya uyguladım th- mükemmel çalışıyor, teşekkürler. :) (Umarım sorun olmaz, cevabınıza bu kuralı da ekledim)
Octopoid

22

Bootstrap 4.5 ve 5.0'da test edildi

Çözümlerin hiçbiri benim için işe yaramıyor. tdSon sütun hâlâ tam genişliği alır. İşte çözüm işe yarıyor.

Ekle table-fitiçin senintable

table.table-fit {
    width: auto !important;
    table-layout: auto !important;
}
table.table-fit thead th, table.table-fit tfoot th {
    width: auto !important;
}
table.table-fit tbody td, table.table-fit tfoot td {
    width: auto !important;
}

İşte sasskullanım için olanı .

@mixin width {
    width: auto !important;
}

table {
    &.table-fit {
        @include width;
        table-layout: auto !important;
        thead th, tfoot th  {
            @include width;
        }
        tbody td, tfoot td {
            @include width;
        }
    }
}

1
bs4 ile çalışan tek çözüm budur. Çok teşekkürler!
TheWiz

12

Biraz eski bir soru, ama buraya bunun için geldim. Tablonun içeriğine uygun, olabildiğince küçük olmasını istedim. Çözüm, basitçe tablo genişliğini rastgele küçük bir sayıya (örneğin 1px) ayarlamaktı. Hatta işlemek için bir CSS sınıfı bile oluşturdum:

.table-fit {
    width: 1px;
}

Ve böyle kullanın:

<table class="table table-fit">

Örnek: JSFiddle


2
Soru, tablonun tüm sütunlarına değil, yalnızca bir tablonun bazı sütunlarına
atıfta bulunuyor

2
Evet, ama sorunuma bir çözüm bulmam gerektiğinde buraya geldim. Bunu cevabımda açıkladım.
Pedro Walter

2
Hala bu soruya uygunsuz ve yanlış bir cevap.
Maritim

8

Ekle w-auto yerli önyükleme 4 sınıf için masa elemanı ve masa içeriğini uyacaktır.

görüntü açıklamasını buraya girin


1
Bu benim için Firefox'ta çalıştı ve gerçek bir Boostrap çözümü.
paperduck

4

Bu çözüm her seferinde iyi değil. Ama sadece iki sütunum var ve ikinci sütunun kalan tüm alanı almasını istiyorum. Bu benim için çalıştı

 <tr>
    <td class="text-nowrap">A</td>
    <td class="w-100">B</td>
 </tr>

1

Bana da yardımcı olduğu için tablonuzu div etiketinin etrafına bu şekilde sarabilirsiniz.

<div class="col-md-3">

<table>
</table>

</div>

0

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />

<h5>Left</h5>
<table class="table table-responsive">
    <tbody>
        <tr>
            <th>Action</th>        
            <th>Name</th>
            <th>Payment Method</th>
        </tr>
        <tr>
            <td  style="width:1px; white-space:nowrap;">
                <a role="button" class="btn btn-default btn-xs" href="/Payments/View/NnrN_8tMB0CkVXt06nkrYg">View</a>
                <a role="button" class="btn btn-primary btn-xs" href="/Payments/View/NnrN_8tMB0CkVXt06nkrYg">Edit</a>
                <a role="button" class="btn btn-danger btn-xs" href="/Payments/View/NnrN_8tMB0CkVXt06nkrYg">Delete</a>                
            </td>        
            <td>Bart Foo</td>
            <td>Visa</td>
        </tr>
    </tbody>
</table>

<h5>Right</h5>

<table class="table table-responsive">
    <tbody>
        <tr>                    
            <th>Name</th>
            <th>Payment Method</th>
            <th>Action</th>            
        </tr>
        <tr>

            <td>Bart Foo</td>
            <td>Visa</td>
            <td  style="width:1px; white-space:nowrap;">
                <a role="button" class="btn btn-default btn-xs" href="/Payments/View/NnrN_8tMB0CkVXt06nkrYg">View</a>
                <a role="button" class="btn btn-primary btn-xs" href="/Payments/View/NnrN_8tMB0CkVXt06nkrYg">Edit</a>
                <a role="button" class="btn btn-danger btn-xs" href="/Payments/View/NnrN_8tMB0CkVXt06nkrYg">Delete</a>                
            </td>            
        </tr>
    </tbody>
</table>

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.