콘텐츠에 맞는 Bootstrap 테이블 열 만들기


82

저는 Bootstrap을 사용하고 있으며 테이블을 그리고 있습니다. 맨 오른쪽 열에는 버튼이 있으며 해당 버튼에 맞는 최소 크기로 드롭 다운하고 싶습니다.

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

이것은 다음과 같이 렌더링됩니다.

표 예

일부 방화범 강조 표시로 열 너비가 다음과 같이 넓어졌습니다.

열 너비

해당 열은 페이지에 따라 크기가 조정되는 반면 페이지는 더 큰 동적 너비 모드에 있습니다. 순수 CSS에서이 문제를 해결하는 방법을 알고 있지만 대부분의 접근 방식은 사이트의 낮은 너비 버전에서 문제를 일으킬 수 있습니다.

해당 열을 내용의 너비로 어떻게 드롭 다운합니까?

(지금까지-기존 부트 스트랩 클래스> 순수 CSS> 자바 스크립트)


이 글을 올린 후 저는 생각을했습니다. 열을 바로 정렬하면 거의 같은 것 같습니다. 다른 열에 공간을 필요로하는 충분한 데이터가 있으면 어쨌든 다시 뽑을 것입니다. 편집 : Doh-최소 크기로 내려야하는 열이 두 개 이상있는 경우 작동하지 않습니다.
— Octopoid

6
레이아웃의 경우 사실이지만 테이블 형식 데이터에는 테이블이 절대적으로 좋습니다.
— Octopoid

2
테이블 대신 div를 사용해야합니다. 그런 다음 페이지 너비와 일치하도록 너비에 대한 백분율 값을 할당 할 수 있습니다.
— sqe

6
구조에 테이블을 사용해서는 안됩니다 . 일반적으로 테이블로 들어가는 데이터에 테이블을 사용할 수 있습니다. Octopoid는 구조에 테이블 태그를 사용하지 않고 데이터를 표시하는 데 사용됩니다. 테이블 태그의 올바른 사용입니다.
— gewh

답변:


154

내용에 맞게 표 셀 너비에 맞는 클래스 만들기

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

7
Gah-나는 이것을 td규칙에 넣은 다음 th완벽하게 작동 하는 -에 적용했습니다 . 감사합니다. :) (당신이 신경 쓰지 않기를 바랍니다, 나는 당신의 대답에 th 규칙도 추가했습니다)
— Octopoid

20

어떤 솔루션도 나를 위해 작동하지 않습니다. td마지막 열은 여전히 전체 폭이 걸립니다. 그래서 여기에 해결책이 있습니다. 부트 스트랩 4에서 테스트 됨

추가 table-fit로table

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

다음은 sass사용을 위한 것 입니다.

@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;
        }
    }
}

이것은 bs4에서 작동하는 유일한 솔루션입니다. 엄청 고마워!
— TheWiz

10

일종의 오래된 질문이지만 나는 이것을 찾고 여기에 도착했습니다. 나는 테이블이 내용에 맞게 가능한 한 작기를 원했습니다. 해결책은 단순히 테이블 너비를 임의의 작은 숫자 (예 : 1px)로 설정하는 것입니다. 처리하기 위해 CSS 클래스도 만들었습니다.

.table-fit {
    width: 1px;
}

다음과 같이 사용하십시오.

<table class="table table-fit">

예 : JSFiddle


2
질문은 테이블의 모든 열이 아닌 테이블의 일부 열에 만 관련됩니다
— GabiM

2
그래,하지만 내 문제에 대한 해결책을 찾기 위해 여기에 도착했다. 나는 이것을 내 대답에 설명했다.
— Pedro Walter

2
이 질문에 대한 답은 여전히 ​​부적절하고 오답입니다.
— Maritim

5

w-auto 네이티브 부트 스트랩 4 클래스 를 테이블 요소에 추가 하면 테이블 이 콘텐츠에 맞을 것입니다.

여기에 이미지 설명 입력


1
이것은 Firefox에서 저에게 효과적이며 실제 Boostrap 솔루션입니다.
— paperduck

3

이 솔루션은 매번 좋지 않습니다. 하지만 두 개의 열만 있고 두 번째 열이 나머지 공간을 모두 차지하기를 원합니다. 이것은 나를 위해 일했습니다.

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

1

나에게도 도움이 된 것처럼 div 태그 주위에 테이블을 감쌀 수 있습니다.

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.