23

Trong bootstrap 3 Tôi có thể áp dụng col-sm-xx cho các thẻ th trong các thead và đổi kích thước các cột của bảng theo ý muốn. Tuy nhiên điều này không làm việc trong bootstrap 4. Làm thế nào tôi có thể đạt được một cái gì đó như thế này trong bootstrap 4?bootstrap 4 cột kích thước cột

<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> 

Nhìn vào mã được cung cấp không đúng kích thước, đặc biệt nếu bạn thêm một số dữ liệu vào bảng. Xem cách này chạy:

<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> 
+0

như một phụ lục cho câu hỏi này: nếu bạn có nội dung dài (chẳng hạn như URL rất dài) để hiển thị các bảng bootstrap 4 không phải là một giải pháp tuyệt vời ngay cả với câu trả lời định cỡ bên dưới. hoặc sử dụng một giải pháp dòng flex hoặc hàng/col có xu hướng hoạt động tốt hơn với tràn và văn bản bọc – Killerpixler

Trả lời

42

Cập nhật 2018

Đảm bảo rằng bảng của bạn bao gồm các lớp table. Điều này là do Bootstrap 4 tables are "opt-in" do đó, lớp table phải được thêm cố ý vào bảng.

http://codeply.com/go/zJLXypKZxL

Bootstrap 3.x cũng đã có một số CSS để thiết lập lại các tế bào bảng để họ không nổi ..

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

Tôi không biết tại sao điều này không phải là là Bootstrap 4 alpha, nhưng nó có thể được thêm vào trong bản phát hành cuối cùng. Thêm CSS này sẽ giúp tất cả các cột để sử dụng độ rộng thiết lập trong thead ..

Bootstrap 4 Alpha 2 Demo


UPDATE (như của Bootstrap 4.0.0)

Bây giờ Bootstrap 4 là flexbox , các ô trong bảng sẽ không giả định chiều rộng chính xác khi thêm col-*. Giải pháp thay thế là sử dụng lớp d-inline-block trên các ô của bảng để ngăn hiển thị mặc định: flex cột.

Một tùy chọn khác trong BS4 là sử dụng các lớp utils cỡ cho chiều rộng ...

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

Bootstrap 4 Alpha 6 Demo

Cuối cùng, bạn có thể sử dụng d-flex trên hàng bảng (tr), và col-* lưới các lớp trên các cột (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> 

Bootstrap 4.0.0 (stable) Demo

+0

Thực tế là không kích thước đúng cách. Kiểm tra xem nó ra nếu bạn thêm một số biên giới để xem cách kích thước và khi bạn thêm một hàng vào cơ thể. Tôi đặt mã lên trong câu hỏi – Killerpixler

+1

cảm ơn rất tốt đẹp oyou – Killerpixler

+0

Thực tế ví dụ BS4-A6 của bạn không hoạt động nếu bạn có nội dung tràn trong một cột vì các cột khác không được mở rộng. Hãy thử dán một số lorem ipsum trong một cột. – Killerpixler

5

Bảng lớp kích thước cột đã được thay đổi từ này

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

để

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

thực sự nó có alpha 5. Cảm ơn bạn đã cập nhật! – Killerpixler

+0

Điều này dường như không hoạt động trong việc thiết lập chiều rộng cột: http://www.codeply.com/go/Utyon2XEB6 – ZimSystem

+0

Xem http://stackoverflow.com/questions/41794746/col-xs-not-working- in-bootstrap-4 –

9

Một lựa chọn khác là để áp dụng phong cách flex tại dòng của bảng, và thêm col-classes vào phần tử bảng/dữ liệu bảng:

<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> 
1

Tính đến Alpha 6 bạn có thể tạo các tập tin sass sau:

@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; 
     } 
     } 
    } 
    } 
} 
Các vấn đề liên quan