Tạo cột bảng Bootstrap vừa với nội dung


82

Tôi đang sử dụng Bootstrap và vẽ một bảng. Cột ngoài cùng bên phải có một nút và tôi muốn nó giảm xuống kích thước tối thiểu mà nó cần để vừa với nút đã nói.

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<table class="table table-responsive">
        <tbody>
            <tr>
                <th>Name</th>
                <th>Payment Method</th>
                <th></th>
            </tr>
            <tr>
                <td>Bart Foo</td>
                <td>Visa</td>
                <td><a role="button" class="btn btn-default btn-xs" href="/Payments/View/NnrN_8tMB0CkVXt06nkrYg">View</a></td>
            </tr>
        </tbody>
    </table>

Điều này hiển thị như thế này:

Ví dụ về bảng

Với một số tô sáng bằng firebug, chiều rộng cột đã rộng ra như thế này:

Chiều rộng cột

Cột đó cân đối với trang, trong khi trang ở chế độ độ rộng động lớn hơn. Tôi có một số ý tưởng về cách sửa lỗi này trong CSS thuần túy, nhưng hầu hết các cách tiếp cận đó có thể sẽ gây ra sự cố với các phiên bản chiều rộng thấp của trang web.

Làm cách nào để làm cho cột đó giảm xuống bằng chiều rộng của nội dung?

(Như mọi khi - Các lớp bootstrap hiện có> CSS thuần túy> Javascript)


Sau khi đăng bài này, tôi chỉ có một suy nghĩ - nếu tôi căn chỉnh đúng cột đó, tôi đoán điều đó cũng tương tự - nếu các cột khác có đủ dữ liệu trong đó để cần khoảng trống, họ sẽ vuốt lại nó. CHỈNH SỬA: Doh - điều này không hoạt động khi tôi có nhiều cột mà tôi cần phải thả xuống kích thước tối thiểu.
Octopoid,

6
Điều đó đúng với bố cục, nhưng các bảng hoàn toàn ổn đối với dữ liệu dạng bảng.
Octopoid,

2
Bạn nên sử dụng div thay vì bảng. Sau đó, bạn có thể chỉ định giá trị phần trăm cho chiều rộng của chúng để phù hợp với chiều rộng trang.
sqe

6
Bảng không nên được sử dụng cho cấu trúc . Bạn có thể sử dụng bảng cho dữ liệu thường đi vào bảng. Octopoid không sử dụng thẻ bảng cho cấu trúc, nó đang được sử dụng để hiển thị dữ liệu. Đó là cách sử dụng đúng thẻ bảng.
gewh

Câu trả lời:


154

Tạo một lớp phù hợp với chiều rộng ô bảng với nội dung

.table td.fit, 
.table th.fit {
    white-space: nowrap;
    width: 1%;
}

7
Gah - tôi đã đặt điều này vào một tdquy tắc sau đó áp dụng nó cho một th- hoạt động hoàn hảo, cảm ơn. :) (Hy vọng bạn không nhớ, tôi đã thêm các quy tắc thứ vào câu trả lời của bạn quá)
Octopoid

20

Không có giải pháp nào phù hợp với tôi. Các tdcột cuối cùng vẫn mất toàn bộ chiều rộng. Vì vậy, đây là giải pháp hoạt động. Đã thử nghiệm trên Bootstrap 4

Thêm table-fitvào của bạntable

table.table-fit {
    width: auto !important;
    table-layout: auto !important;
}
table.table-fit thead th, table.table-fit tfoot th {
    width: auto !important;
}
table.table-fit tbody td, table.table-fit tfoot td {
    width: auto !important;
}

Đây là một để sasssử dụng.

@mixin width {
    width: auto !important;
}

table {
    &.table-fit {
        @include width;
        table-layout: auto !important;
        thead th, tfoot th  {
            @include width;
        }
        tbody td, tfoot td {
            @include width;
        }
    }
}

đây là giải pháp duy nhất hoạt động với bs4. Cảm ơn rất nhiều!
TheWiz

10

Một câu hỏi cũ, nhưng tôi đến đây để tìm câu hỏi này. Tôi muốn cái bàn càng nhỏ càng tốt, vừa với đồ đạc của nó. Giải pháp là chỉ cần đặt chiều rộng bảng thành một số nhỏ tùy ý (1px chẳng hạn). Tôi thậm chí đã tạo một lớp CSS để xử lý nó:

.table-fit {
    width: 1px;
}

Và sử dụng nó như vậy:

<table class="table table-fit">

Ví dụ: JSFiddle


2
Câu hỏi đặt ra là reffering để chỉ một số cột của một bảng, chứ không phải để tất cả các cột của bảng
GabiM

2
Vâng, nhưng cần tìm giải pháp cho vấn đề của mình, tôi đã đến đây. Tôi đã giải thích điều này trong câu trả lời của mình.
Pedro Walter

2
Nó vẫn là một câu trả lời không phù hợp và không chính xác cho câu hỏi này.
Maritim

5

Thêm w-auto mẹ đẻ bootstrap 4 lớp với bảng thành phần và bảng của bạn sẽ phù hợp với nội dung của nó.

nhập mô tả hình ảnh ở đây


1
Cái này phù hợp với tôi trên Firefox và nó là một giải pháp Boostrap thực tế.
paperduck

3

Giải pháp này không phải lần nào cũng tốt. Nhưng tôi chỉ có hai cột và tôi muốn cột thứ hai chiếm hết không gian còn lại. Điều này đã làm việc cho tôi

 <tr>
    <td class="text-nowrap">A</td>
    <td class="w-100">B</td>
 </tr>

1

Bạn có thể quấn bảng của mình xung quanh thẻ div như thế này vì nó cũng giúp tôi.

<div class="col-md-3">

<table>
</table>

</div>

0

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />

<h5>Left</h5>
<table class="table table-responsive">
    <tbody>
        <tr>
            <th>Action</th>        
            <th>Name</th>
            <th>Payment Method</th>
        </tr>
        <tr>
            <td  style="width:1px; white-space:nowrap;">
                <a role="button" class="btn btn-default btn-xs" href="/Payments/View/NnrN_8tMB0CkVXt06nkrYg">View</a>
                <a role="button" class="btn btn-primary btn-xs" href="/Payments/View/NnrN_8tMB0CkVXt06nkrYg">Edit</a>
                <a role="button" class="btn btn-danger btn-xs" href="/Payments/View/NnrN_8tMB0CkVXt06nkrYg">Delete</a>                
            </td>        
            <td>Bart Foo</td>
            <td>Visa</td>
        </tr>
    </tbody>
</table>

<h5>Right</h5>

<table class="table table-responsive">
    <tbody>
        <tr>                    
            <th>Name</th>
            <th>Payment Method</th>
            <th>Action</th>            
        </tr>
        <tr>

            <td>Bart Foo</td>
            <td>Visa</td>
            <td  style="width:1px; white-space:nowrap;">
                <a role="button" class="btn btn-default btn-xs" href="/Payments/View/NnrN_8tMB0CkVXt06nkrYg">View</a>
                <a role="button" class="btn btn-primary btn-xs" href="/Payments/View/NnrN_8tMB0CkVXt06nkrYg">Edit</a>
                <a role="button" class="btn btn-danger btn-xs" href="/Payments/View/NnrN_8tMB0CkVXt06nkrYg">Delete</a>                
            </td>            
        </tr>
    </tbody>
</table>

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.