콘텐츠에 맞는 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-fittable

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.