Các ô trong bảng có kích thước bằng nhau để lấp đầy toàn bộ chiều rộng của bảng chứa


96

Có cách nào sử dụng HTML / CSS (với định cỡ tương đối) để làm cho một hàng ô kéo dài toàn bộ chiều rộng của bảng mà nó được chứa trong đó không?

Các ô phải có chiều rộng bằng nhau và kích thước bảng bên ngoài cũng thay đổi theo <table width="100%">.

Hiện tại nếu tôi không chỉ định kích thước cố định; các ô chỉ tự động thay đổi kích thước để phù hợp với nội dung của chúng.

Câu trả lời:


144

Bạn thậm chí không phải đặt chiều rộng cụ thể cho các ô, table-layout: fixedchỉ cần trải đều các ô.

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>

Lưu ý rằng table-layoutđể hoạt động, phần tử được tạo kiểu bảng phải có chiều rộng được đặt (trong ví dụ của tôi là 100%).


11
giải pháp này là tốt hơn, và nên làm việc ngay cả với cột tạo động
Imran Omar Bukhsh

Nếu một chuỗi vượt quá chiều rộng td max, bạn đang gặp rắc rối
Sterling Archer

5
Thêm vào word-wrap:break-wordsẽ khắc phục sự cố này, như tôi vừa phát hiện
Sterling Archer

113

Chỉ cần sử dụng phần trăm chiều rộng và bố cục bảng cố định :

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

với

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

Bố cục bảng cố định rất quan trọng vì nếu không, trình duyệt sẽ điều chỉnh độ rộng khi nó thấy phù hợp nếu nội dung không vừa vặn, tức là độ rộng là một gợi ý không phải là quy tắc không có bố cục bảng cố định.

Rõ ràng, điều chỉnh CSS để phù hợp với hoàn cảnh của bạn, thường có nghĩa là chỉ áp dụng kiểu cho các bảng có một lớp nhất định hoặc có thể với một ID nhất định.


và chắc chắn rằng bạn đang td chọn không chọn khác td của tham gia: D
Gordon Gustafson

3
bạn không cần đặt chiều rộng tdbởi vì bạn có thể có số cột động… và nó hoạt động mà không cần thông qua.
Даниил Пронин

4

Sử dụng table-layout: fixednhư một thuộc tính cho tablewidth: calc(100%/3);cho td( giả sử có 3 td' ). Với hai thuộc tính này được thiết lập, các ô trong bảng sẽ có kích thước bằng nhau .

Tham khảo bản demo .


2
Bạn không cần cả hai, một trong hai giải pháp là đủ.
Chris Kraszewski
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.