Xử lý bảng đáp ứng trong Twitter Bootstrap


84

Khi chiều rộng của bảng vượt quá chiều rộng của span, như trang này: http://jsfiddle.net/rcHdC/

Bạn sẽ thấy nội dung của bảng nằm ngoài span.

Phương pháp tốt nhất để giải quyết trường hợp này là gì?


Bạn muốn điều gì xảy ra?
cimmanon

Câu trả lời:


153

Bootstrap 3 hiện đã có sẵn các bảng Đáp ứng. Hoan hô! :)

Bạn có thể kiểm tra nó tại đây: https://getbootstrap.com/docs/3.3/css/#tables-responsive

Thêm một <div class="table-responsive">xung quanh bảng của bạn và bạn sẽ sẵn sàng:

<div class="table-responsive">
  <table class="table">
    ...
  </table>
</div>

Để làm cho nó hoạt động trên tất cả các bố cục, bạn có thể làm như sau:

.table-responsive
{
    overflow-x: auto;
}

7
Nhưng nó chỉ áp dụng cho các thiết bị nhỏ (dưới 768px): S Nguồn: getbootstrap.com/css/#tables-responsive
VSP

1
Để bật tính năng này trên tất cả các bố cục kích thước, bạn chỉ có thể thả các kiểu đáp ứng từ khối 768 trong tệp foundation_and_overrides.css.scss. Một cái gì đó như `` '.table-responsive {width: 100%; tràn-y: ẩn; tràn-x: cuộn; -ms-tràn-style: -ms-autohiding-scrollbar; -webkit-tràn-cuộn: chạm vào; } `` '
genkilabs

3
@ ase69s kiểm tra câu trả lời cập nhật của tôi. Vừa rồi tôi cần nó trên một bảng có nhiều cột. Thêm overflow-x: autovào một CSStệp tùy chỉnh thực hiện mẹo cho bố cục hiển thị lớn hơn.
Leniel Maccaferri

Bạn cũng có thể muốn thêm đường viền vào định nghĩa tổng hợp đó, để có tính nhất quán:border: 1px solid #dddddd;
ptim

2
Cũng có thể muốn thêm .table-responsive td, .table-responsive th { white-space:nowrap; }để đảm bảo các ô không tự động thu nhỏ và thêm dấu ngắt dòng.
rybo111


18

Có nhiều điều khác nhau bạn có thể làm khi xử lý các bảng đáp ứng.

Cá nhân tôi thích cách tiếp cận này của Chris Coyier:

Bạn có thể tìm thấy nhiều lựa chọn thay thế khác tại đây:

Nếu bạn có thể tận dụng Bootstrap và nhanh chóng nhận được thứ gì đó, bạn có thể chỉ cần sử dụng tên lớp ".hidden-phone" và ".hiised-tablet" để ẩn một số hàng nhưng phương pháp này có thể là tốt nhất trong nhiều trường hợp. Thông tin thêm (xem "Các lớp tiện ích đáp ứng"):


5
+1 cho Liên kết Coyer. Tôi đã sử dụng nó trong quá khứ để có hiệu quả tuyệt vời.
Fetchez la vache

Yup, giải pháp của Chris Coyer rất gọn gàng. Đẹp hơn nhiều so với cái được cung cấp bởi bootstrap hoặc zurbfoundation (họ chỉ cần thêm cuộn ngang).
Adrien Be

Tính đến thời điểm hiện tại, tháng 1 năm 2016, nội dung phản hồi của Coyier và những người khác đã được 5 - 6 tuổi, trước khi mọi người bắt đầu sử dụng Twitter Bootstrap.
Andrew Koper

1

Nếu bạn đang sử dụng Bootstrap 3 trở xuống, bạn có thể áp dụng các bảng đáp ứng cho tất cả các độ phân giải bằng cách cập nhật tệp:

tables.less

hoặc ghi đè phần này:

@media (max-width: @screen-xs) {
  .table-responsive {
    width: 100%;
    margin-bottom: 15px;
    overflow-y: hidden;
    overflow-x: scroll;
    border: 1px solid @table-border-color;

    // Tighten up spacing and give a background color
    > .table {
      margin-bottom: 0;
      background-color: #fff;

      // Ensure the content doesn't wrap
      > thead,
      > tbody,
      > tfoot {
        > tr {
          > th,
          > td {
            white-space: nowrap;
          }
        }
      }
    }

    // Special overrides for the bordered tables
    > .table-bordered {
      border: 0;

      // Nuke the appropriate borders so that the parent can handle them
      > thead,
      > tbody,
      > tfoot {
        > tr {
          > th:first-child,
          > td:first-child {
            border-left: 0;
          }
          > th:last-child,
          > td:last-child {
            border-right: 0;
          }
        }
        > tr:last-child {
          > th,
          > td {
            border-bottom: 0;
          }
        }
      }
    }
  }
}

Với:

@media (max-width: @screen-lg) {
  .table-responsive {
    width: 100%;
...

Lưu ý cách tôi đã thay đổi giá trị dòng đầu tiên @ screen-XX.

Tôi biết việc làm cho tất cả các bảng trở nên phản hồi có vẻ không tốt, nhưng tôi thấy điều này cực kỳ hữu ích khi bật tính năng này lên LG trên các bảng lớn (nhiều cột).

Hy vọng nó sẽ giúp một ai đó.

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.