<td> için sabit genişlik nasıl ayarlanır?


513

Basit şema:

  <tr class="something">
    <td>A</td>
    <td>B</td>
    <td>C</td>
    <td>D</td>
  </tr>

İçin sabit bir genişlik ayarlamam gerekiyor <td>. Denedim:

tr.something {
  td {
    width: 90px;
  }
}

Ayrıca

td.something {
  width: 90px;
}

için

<td class="something">B</td>

Ve hatta

<td style="width: 90px;">B</td>

Ancak genişliği <td>hala aynı.


1
Sadece denedim ve işe yarıyor - belki sorun farklı bir yerde. Firebug size element hakkında ne söylüyor?
Rockbot

Bu sitede insan video ile bu konuyu anlatıyor. Çok açık.
egemen

style="width: 1% !important;"genişliği sütundaki en uzun kelime kadar sıkı yapmak için kullanın , ilk ID / # sütunu için kullanışlıdır. Chrome (masaüstü ve mobil), opera (masaüstü), IE (masaüstü), kenar (masaüstü), firefox (masaüstü) içinde
test edildi

Yanıtlar:


1084

Bootstrap 4.0 için:

Bootstrap 4.0.0'da col-*sınıfları güvenilir bir şekilde kullanamazsınız (Firefox'ta çalışır, ancak Chrome'da çalışmaz). OhadR'ın cevabını kullanmanız gerekir :

<tr>
  <th style="width: 16.66%">Col 1</th>
  <th style="width: 25%">Col 2</th>
  <th style="width: 50%">Col 4</th>
  <th style="width:  8.33%">Col 5</th>
</tr>

Bootstrap 3.0 için:

Twitter bootstrap 3 ile: class="col-md-*"burada *, bir dizi genişlik sütunudur.

<tr class="something">
    <td class="col-md-2">A</td>
    <td class="col-md-3">B</td>
    <td class="col-md-6">C</td>
    <td class="col-md-1">D</td>
</tr>

Bootstrap 2.0 için:

Twitter bootstrap 2 ile: class="span*"burada *, bir dizi genişlik sütunudur.

<tr class="something">
    <td class="span2">A</td>
    <td class="span3">B</td>
    <td class="span6">C</td>
    <td class="span1">D</td>
</tr>

** <th>Elemanlarınız varsa , orada genişliği ayarladınız <td>.


79
12'den fazla sütununuz varsa ne olur?
ClearCloud8

33
bunu yalnızca her <th> etiketindeki <head> öğesine uygulayabilirsiniz ve tüm satırlar eşleşir
Diego Fernando Murillo Valenci

7
Bootstrap web sitesinde bununla ilgili belgeler var mı?
Luis Perez

26
Bu işe yarıyor, ancak bootstrap sitesinde değil, çünkü bu col- * sınıfları bu şekilde kullanılmaz. Duyarlı önyükleme ızgaralarında kullanılması amaçlanmıştır. Bunların yaptıklarından hoşlanıyorsanız, onlar için CSS'ye bakmayı ve kendi CSS'nizi yapmak için kopyalamayı düşünün.
DustinA

1
Ayrıca, sınıfı erişim satırı için ayarlamak yerine, <th> başlığı için bir kez ayarlayabiliriz ve gerisi otomatik olarak halledilir!
dopplesoldner

133

Aynı sorunu yaşıyordum, tabloyu düzelttim ve td genişliğimi belirttim. Eğer inci varsa bunları da yapabilirsiniz.

table {
    table-layout: fixed;
    word-wrap: break-word;
}

Şablon:

<td style="width:10%">content</td>

Herhangi bir düzeni yapılandırmak için lütfen CSS kullanın.



Bu harika ama bir ekleme kullanımı a kadar classiçinde tdetiketinin yerine doğrudan tarzını uygulayarak
Ramses

1
Bu , benzer genişliği genişletmek için yeterince iyi çalışıyor th: <th style="width: 25%;"></th>Bu, diğer sütun genişliğini etkileyecek
shaijut

Teşekkür ederim! Bootstrap 3 için col-md-x sınıfı ayarladım ama işe yaramadı. Tablo düzenini "düzeltildi" olarak ayarlamak sorunumu çözer.
maurisrx

Bu çalışıyor. Anahtar table-layout: fixed. BS4 ile oluşturulan birçok şablon tablolar da dahil olmak üzere her şeye esneklik uyguladığından bu gereklidir.
Ivan

73

col-md-*Sınıfları tdsatırdaki her birine uygulamak yerine a oluşturabilir colgroupve sınıfları coletikete uygulayabilirsiniz .

    <table class="table table-striped">
        <colgroup>
            <col class="col-md-4">
            <col class="col-md-7">
        </colgroup>
        <tbody>
        <tr>
            <td>Title</td>
            <td>Long Value</td>
        </tr>
        </tbody>
    </table>

Burada demo


1
Bunu tercih ederim ama benim
durumuma

Bu çözümü seviyorum, bu arada, neden col-lg- *, col-sm- * veya col-xs- * değil col-md- * sınıflarını kullanmaya zorlanıyor?
LucioB

1
@LucioB istediğinizi kullanabilir ve hatta birkaçını sütuna göre kullanabilirsiniz (örnek <col class="col-md-4 col-sm-6">, orta ekran boyutunda% 33, küçük ekran boyutunda% 50 genişliğe sahip olacaktır)
VDarricau

1
Colgroup, Chrome'da çalışmıyor. (Bootstrap v4.1). Tarayıcılar arasında tekdüzelik için <td> öğeleri için% width kullanın.
AnkitK

57

Umarım bu birine yardım eder:

<table class="table">
  <thead>
    <tr>
      <th style="width: 30%">Col 1</th>
      <th style="width: 20%">Col 2</th>
      <th style="width: 10%">Col 3</th>
      <th style="width: 30%">Col 4</th>
      <th style="width: 10%">Col 5</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Val 1</td>
      <td>Val 2</td>
      <td>Val 3</td>
      <td>Val 4</td>
      <td>Val 5</td>
    </tr>
  </tbody>
</table>

https://github.com/twbs/bootstrap/issues/863


1
Kullanımı en kolay cevap
GavinBelson

54

<table class="table">Masanızda kullanıyorsanız , Bootstrap'ın tablo sınıfı tabloya% 100 genişlik ekler. Genişliği otomatik olarak değiştirmeniz gerekir.

Ayrıca, tablonuzun ilk satırı bir başlık satırı ise, genişliği td yerine th'ye eklemeniz gerekebilir.


1
Bootstrap 3'e ek olarak th, şu anda bu tür başlıklar kırılmayacağından şu anda olduğu için ' nin beyaz boşluk özelliğini normale ayarlamanız gerekecektir.
Sammaye

41

Benim durumumda hücreleri min-width: 100pxyerine veya kullanarak bu sorunu giderebildim .width: 100pxthtd

.table td, .table th {
    min-width: 100px;
}

13
Bu, akıl sağlığımdan geriye kalanları korumuş olabilir.
Joel

Evet! bu, duyarlı bir tablodaki bir sütunun minimum genişliğini ayarlar. Teşekkürler.
O. Jones

1
cevaplanan sorudan daha iyi çalıştı, teşekkürler!
İsrail

38

Bootstrap 4 için sınıf yardımcısını kullanabilirsiniz:

<table class="table">
  <thead>
    <tr>
      <td class="w-25">Col 1</td>
      <td class="w-25">Col 2</td>
      <td class="w-25">Col 3</td>
      <td class="w-25">Col 4</td>
    </tr>
  </thead>
  <tbody>
    <tr>
      ...

5
Bu benim kullanım durumum için uygun. Teşekkürler!
tonny

16
Sadece w- * seçeneklerinin not edilmesi önemlidir: .w-25, .w-50, .w-75, .w-100, .w-autobu yüzden başka bir şey istiyorsanız , yerelleştirilmiş css dosyanıza w-10eklemeniz gerekir .w-10 { width: 10% !important; }.
Abela

10

Bunu dene -

<style>
 table { table-layout: fixed; }
 table th, table td { overflow: hidden; }
</style>

3
Bu, diğer tüm cevaplardan işe yarayan tek kişidir.
0bserver07

Ayrıca text-overflow: ellipsiskesme metninin görünür olduğundan emin olmak için ekledim
weeksdev

@ Observer07 Gerçekten
TheRandomGuy

9

Önyükleme 4.0

Bootstrap 4.0'da, sınıf d-flex ekleyerek tablo satırlarını flex-box olarak tanımlamamız ve ayrıca Bootstrap'in görünüm penceresinden otomatik olarak türetmesine izin vermek için xs, md, sonekleri bırakmamız gerekir.

Bu yüzden aşağıdaki görünecektir:

<table class="table">
    <thead>
        <tr class="d-flex">
            <th class="col-2"> Student No. </th>
            <th class="col-7"> Description </th>
            <th class="col-3"> Amount </th>
        </tr>
    </thead>

    <tbody>
        <tr class="d-flex">
            <td class="col-2">test</td>
            <td class="col-7">Name here</td>
            <td class="col-3">Amount Here </td>
        </tr>
</table>

Bu başka birine yardımcı olacağını umuyoruz!

Şerefe!


7

Bu kombine çözüm benim için çalıştı, eşit genişlikte sütunlar istedim

<style type="text/css">

    table {
        table-layout: fixed;
        word-wrap: break-word;
    }

        table th, table td {
            overflow: hidden;
        }

</style>

Sonuç: -

resim açıklamasını buraya girin


3

Tamam, sadece sorunun nerede olduğunu anladım - Bootstrap öğesi widthiçin varsayılan bir değer olarak ayarlanır select, böylece çözüm:

tr. something {
  td {
    select {
      width: 90px;
    }
  }
}

Başka hiçbir şey işe yaramıyor.


2

Sayfanın bağlamı html veya CSS'nizin geri kalanı olmadan yargılamak zor. CSS kuralınızın td öğesini etkilememesinin milyonlarca nedeni olabilir.

Gibi daha spesifik CSS seçicileri denediniz mi?

tr.somethingontrlevel td.something {
  width: 90px;
}

Bu, CSS'nizin bootstrap css'den daha spesifik bir kural tarafından geçersiz kılınmasını önlemek için.

(bu arada, stil özniteliğine sahip satır içi css örneğinizde, genişliği yanlış yazdınız - bu denemenin neden başarısız olduğunu açıklayabilir!)


2

Bir süredir bu sorunla mücadele ediyorum, bu yüzden birinin benimle aynı aptal hatayı <td>yapması durumunda ... İçinde white-space:prestil uygulanmış eleman vardı . Bu benim tüm tablo / tr / td hileler atıldı yaptı. Bu stili kaldırdığımda, aniden tüm metinlerim güzel bir şekilde biçimlendirildi.td .

Yani, her zaman ana konteyneri ( tableveya gibi td) kontrol edin, aynı zamanda, güzel kodunuzu daha derin bir yerde iptal edip etmediğinizi her zaman kontrol edin :)


1

Bootstrap 4'te "tr" için satır yerine d-flex kullanın

Mesele şu ki, "row" sınıfı sorunları tanıtan üst konteynırdan daha fazla genişlik alıyor.

<table class="table">
  <tbody>
    <tr class="d-flex">
      <td class="col-sm-8">Hello</td>
      <td class="col-sm-4">World</td>
    </tr>
    <tr class="d-flex">
      <td class="col-sm-8">8 columns</td>
      <td class="col-sm-4">4 columns</td>
    </tr>
  </tbody>
</table>


"Tr" yerine "satır" demek istedim. Satır sınıfı her iki ucunda oluklar ile birlikte gelir. Veya "row" sınıfını kullanmak istemiyorsanız "no-gutters" sınıfını ekleyin.
Usman Anwar

1

Bootstarp 4'te kullanabilirsiniz rowve col-*tabloda aşağıdaki gibi kullanıyorum

<table class="table">
    <thead>
        <tr class="row">
            <th class="col-sm-3">3 row</th>
            <th class="col-sm-4">4 row</th>
            <th class="col-sm-5">5 row</th>
        </tr>
    </thead>
    <tbody>
        <tr class="row">
            <td class="col-sm-3">some text</td>
            <td class="col-sm-4">some text</td>
            <td class="col-sm-5">some text</td>
        </tr>
    </tbody>
</table>

1

IE ile uğraşmak zorunda olmadığımda sık sık böyle yaparım

    <tr>
      <th scope="col" style="width: calc(1 * 100% / 12)">#</th>
      <th scope="col" style="width: calc(4 * 100% / 12)">Website</th>
      <th scope="col" style="width: calc(3 * 100% / 12)">Username</th>
      <th scope="col" style="width: calc(3 * 100% / 12)">Password</th>
      <th scope="col" style="width: calc(1 * 100% / 12)">Action</th>
    </tr>

Bu şekilde tanıdık bir 12-col ızgarasına sahip olabilirsiniz.


0

Bunların hiçbiri benim için çalışmıyor ve% veya sm sınıfı yapmak için datatable üzerinde birçok sütun var, bootstrap'ta 12 öğenin düzenine eşit.

Datatables Angular 5 ve Bootstrap 4 ile çalışıyordum ve masada çok sayıda sütun var. Benim için çözüm, belirli bir genişliğe sahip bir eleman THeklemekti DIV. Örneğin "Kişi Adı" ve "Olay tarihi" sütunları için Belirli bir genişliğe ihtiyacım var, sonra divcol başlığına bir koy , tüm col genişliği daha sonra div üzerindeki belirtilen genişliğe göre yeniden boyutlandırılır TH:

<table datatable [dtOptions]="dtOptions" *ngIf="listData" class="table table-hover table-sm table-bordered text-center display" width="100%">
    <thead class="thead-dark">
        <tr>
            <th scope="col">ID </th>
            <th scope="col">Value</th>
            <th scope="col"><div style="width: 600px;">Person Name</div></th>
            <th scope="col"><div style="width: 800px;">Event date</div></th> ...

-1

td veya th olmadan .something kullanın

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title> 
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">  
  <style>
    .something {
      width: 90px;
      background: red;
    }
  </style>
</head>
<body>

<div class="container">
  <h2>Fixed width column</h2>            
  <table class="table table-bordered">
    <thead>
      <tr>
        <th class="something">Firstname</th>
        <th>Lastname</th>
        <th>Email</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>John</td>
        <td>Doe</td>
        <td>john@example.com</td>
      </tr>
      <tr>
        <td>Mary</td>
        <td>Moe</td>
        <td>mary@example.com</td>
      </tr>
      <tr>
        <td>July</td>
        <td>Dooley</td>
        <td>july@example.com</td>
      </tr>
    </tbody>
  </table>
</div>

</body>
</html>


-2

<div class="row" id="divcashgap" style="display:none">
                <div class="col-md-12">
                    <div class="table-responsive">
                        <table class="table table-default" id="gvcashgapp">
                            <thead>
                                <tr>
                                    <th class="1">BranchCode</th>
                                    <th class="2"><a>TC</a></th>
                                    <th class="3">VourNo</th>
                                    <th class="4"  style="min-width:120px;">VourDate</th>
                                    <th class="5" style="min-width:120px;">RCPT Date</th>
                                    <th class="6">RCPT No</th>
                                    <th class="7"><a>PIS No</a></th>
                                    <th class="8" style="min-width:160px;">RCPT Ammount</th>
                                    <th class="9">Agging</th>
                                    <th class="10" style="min-width:160px;">DesPosition Days</th>
                                    <th class="11" style="min-width:150px;">Bank Credit Date</th>
                                    <th class="12">Comments</th>
                                    <th class="13" style="min-width:150px;">BAC Comment</th>
                                    <th class="14">BAC Ramark</th>
                                    <th class="15" style="min-width:150px;">RAC Comment</th>
                                    <th class="16">RAC Ramark</th>
                                    <th class="17" style="min-width:120px;">Update Status</th>
                                </tr>
                            </thead>
                            <tbody id="tbdCashGapp"></tbody>
                        </table>
                    </div>
                </div>
            </div>


Biraz açıklama ekleyin.
Akash Dubey

Bu cevap en iyi ihtimalle kafa karıştırıcı. Sınıflar garip, zorunlu olmayan kimliklerdir, açıklama yok.
GotBatteries
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.