Sel tabel berukuran sama untuk mengisi seluruh lebar tabel penampung


96

Apakah ada cara menggunakan HTML / CSS (dengan ukuran relatif) untuk membuat baris sel merentangkan seluruh lebar tabel di dalamnya?

Sel harus sama lebarnya dan ukuran tabel luar juga dinamis dengan <table width="100%">.

Saat ini jika saya tidak menentukan ukuran tetap; sel-selnya hanya mengubah ukuran agar sesuai dengan isinya.

Jawaban:


144

Anda bahkan tidak perlu menyetel lebar khusus untuk sel, table-layout: fixedcukup untuk menyebarkan sel secara merata.

ul {
    width: 100%;
    display: table;
    table-layout: fixed;
    border-collapse: collapse;
}
li {
    display: table-cell;
    text-align: center;
    border: 1px solid hotpink;
    vertical-align: middle;
    word-wrap: break-word;
}
<ul>
  <li>foo<br>foo</li>
  <li>barbarbarbarbar</li>
  <li>baz</li>
</ul>

Perhatikan bahwa untuk table-layoutbekerja elemen bergaya tabel harus memiliki set lebar (100% dalam contoh saya).


11
solusi ini lebih baik, dan harus bekerja bahkan dengan kolom yang dibuat secara dinamis
Imran Omar Bukhsh

Jika sebuah string melebihi lebar td max, Anda dalam masalah
Sterling Archer

5
Menambahkan word-wrap:break-wordakan memperbaiki masalah ini, seperti yang baru saya temukan
Sterling Archer

113

Cukup gunakan lebar persentase dan tata letak tabel tetap :

<table>
<tr>
  <td>1</td>
  <td>2</td>
  <td>3</td>
</tr>
</table>

dengan

table { table-layout: fixed; }
td { width: 33%; }

Tata letak tabel tetap penting karena jika tidak browser akan menyesuaikan lebar sesuai keinginan jika isinya tidak sesuai, yaitu lebar jika tidak, saran bukan aturan tanpa tata letak tabel tetap.

Tentunya, sesuaikan CSS agar sesuai dengan keadaan Anda, yang biasanya berarti menerapkan gaya hanya ke tabel dengan kelas tertentu atau mungkin dengan ID tertentu.


dan pastikan Anda td selector tidak memilih td lain yang terlibat: D
Gordon Gustafson

3
Anda tidak perlu menyetel lebar tdkarena Anda mungkin memiliki jumlah kolom yang dinamis ... dan berfungsi tanpa melalui.
Даниил Пронин

4

Menggunakan table-layout: fixedsebagai properti untuk tabledan width: calc(100%/3);untuk td( dengan asumsi ada 3 td's ). Dengan mengatur dua properti ini, sel tabel akan memiliki ukuran yang sama .

Lihat demo .


2
Anda tidak membutuhkan keduanya, salah satu solusi saja sudah cukup.
Chris Kraszewski
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.