테이블 열 크기 조정


104

에서는 태그에 Bootstrap 3적용 col-sm-xx하고 테이블 열의 크기를 마음대로 조정할 수 있습니다 . 그러나 이것은 부트 스트랩 4에서 작동하지 않습니다. 부트 스트랩 4에서 이와 같은 것을 어떻게 얻을 수 있습니까?ththead

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

특히 테이블에 데이터를 추가하는 경우 크기가 적절하지 않은 경우 codeply를 살펴보십시오. 이것이 어떻게 실행되는지 확인하십시오.

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

1
이 질문에 대한 부록으로 : 긴 콘텐츠 (예 : 매우 긴 URL)가있는 경우 부트 스트랩 4 테이블을 표시하는 것은 아래 크기 조정 답변으로도 훌륭한 솔루션이 아닙니다. flex-row 또는 row / col 솔루션을 사용하는 것이 오버플로 및 텍스트 랩으로 더 잘 작동하는 경향이 있습니다.
Killerpixler

답변:


163

2018 년 업데이트

테이블에 table수업이 포함되어 있는지 확인하십시오 . 이는 Bootstrap 4 테이블이 "opt-in" 이므로 table클래스를 의도적으로 테이블에 추가해야하기 때문입니다.

http://codeply.com/go/zJLXypKZxL

Bootstrap 3.x에는 표 셀이 부동하지 않도록 재설정하는 CSS도 있습니다.

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

이것이 Bootstrap 4 알파가 아닌 이유는 모르겠지만 최종 릴리스에서 다시 추가 될 수 있습니다. 이 CSS를 추가하면 모든 열이 thead..

Bootstrap 4 Alpha 2 데모


업데이트 (부트 스트랩 4.0.0 기준)

이제 부트 스트랩 4가 플렉스 박스이므로를 추가 할 때 테이블 셀이 올바른 너비를 가정하지 않습니다 col-*. 해결 방법은 d-inline-block테이블 셀 의 클래스 를 사용 하여 기본 표시 : 열의 유연성을 방지하는 것입니다.

BS4의 또 다른 옵션은 너비에 대한 크기 조정 유틸리티 클래스를 사용하는 것입니다.

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

마지막으로 d-flex테이블 행 (tr)과 col-*열 (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>

부트 스트랩 4.0.0 (안정적) 데모

참고 : TR을 display : flex로 변경하면 테두리가 변경 될 수 있습니다.


실제로 크기가 적절하지 않습니다. 크기 조정 방법과 본문에 행을 추가 할 때 테두리를 추가했는지 확인하십시오. 나는 문제의 코드를 넣어
Killerpixler

실제로 BS4-A6 예제는 다른 열이 확장되지 않았기 때문에 열에 내용이 넘치면 작동하지 않습니다. 한 열에 일부 lorem ipsum을 붙여 넣으십시오.
Killerpixler

1
솔루션이 작동했습니다. 내 경우, 나는 부정적인 패딩 피하기 위해 TR에 노 배수구를 추가하지 필요 jsfiddle.net/Vimalan/xhvdcasn
Vimalan 자야 가네

예, w-25, w-50, 및 w-75클래스는 부트 스트랩 4. 감사를 작동!
olidem

26

또 다른 옵션은 테이블 행에 플렉스 스타일을 적용 col-classes하고 테이블 헤더 / 테이블 데이터 요소에를 추가하는 것입니다.

<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
작동하지만 vertical-align: middle더 이상 d-flex수업에서 작동하지 않습니다 .
Eve.

수직 정렬은 실제로 flexbox 레이아웃에서 작동하지 않습니다. 사용 align-items: baseline. flexbox에 대한 자세한 내용은이 가이드를 참조하십시오
Jacob van Lingen 19

13

d-flex클래스 사용 은 잘 작동하지만 일부 다른 속성은 더 이상 vertical-align: middle속성 처럼 작동하지 않습니다 .

열 크기를 매우 쉽게 조정하는 가장 좋은 방법 widththead셀 에서만 백분율로 속성 을 사용하는 것입니다 .

<table class="table">
    <thead>
        <tr>
            <th width="25%">25%</th>
            <th width="25%">25%</th>
            <th width="50%">50%</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>25%</td>
            <td>25%</td>
            <td>50%</td>
        </tr>
    </tbody>
</table>

5
정직하게 가장 간단하고 최상의 솔루션입니다. 다른 모든 것은 나를 위해 비참하게 실패했습니다.
Creature

3
참고 이제 <th>에 너비 속성을 사용 하는 것은 HTML5
StefanJM

10

@florian_korner의 게시물을보기 전에 필요에 따라 Bootstrap 4.1.1 릴리스를 위해 이것을 해킹했습니다. 매우 비슷해 보입니다.

sass를 사용하는 경우 부트 스트랩 포함 끝에이 스 니펫을 붙여 넣을 수 있습니다. Chrome, IE 및 Edge의 문제를 해결하는 것 같습니다. firefox에서 아무것도 깨뜨리지 않는 것 같습니다.

@mixin make-td-col($size, $columns: $grid-columns) {
    width: percentage($size / $columns);
}

@each $breakpoint in map-keys($grid-breakpoints) {
    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);

    @for $i from 1 through $grid-columns {
        td.col#{$infix}-#{$i}, th.col#{$infix}-#{$i} {
            @include make-td-col($i, $grid-columns);
        }
    }
}

또는 컴파일 된 css 유틸리티를 원하는 경우 :

td.col-1, th.col-1 {
  width: 8.33333%; }

td.col-2, th.col-2 {
  width: 16.66667%; }

td.col-3, th.col-3 {
  width: 25%; }

td.col-4, th.col-4 {
  width: 33.33333%; }

td.col-5, th.col-5 {
  width: 41.66667%; }

td.col-6, th.col-6 {
  width: 50%; }

td.col-7, th.col-7 {
  width: 58.33333%; }

td.col-8, th.col-8 {
  width: 66.66667%; }

td.col-9, th.col-9 {
  width: 75%; }

td.col-10, th.col-10 {
  width: 83.33333%; }

td.col-11, th.col-11 {
  width: 91.66667%; }

td.col-12, th.col-12 {
  width: 100%; }

td.col-sm-1, th.col-sm-1 {
  width: 8.33333%; }

td.col-sm-2, th.col-sm-2 {
  width: 16.66667%; }

td.col-sm-3, th.col-sm-3 {
  width: 25%; }

td.col-sm-4, th.col-sm-4 {
  width: 33.33333%; }

td.col-sm-5, th.col-sm-5 {
  width: 41.66667%; }

td.col-sm-6, th.col-sm-6 {
  width: 50%; }

td.col-sm-7, th.col-sm-7 {
  width: 58.33333%; }

td.col-sm-8, th.col-sm-8 {
  width: 66.66667%; }

td.col-sm-9, th.col-sm-9 {
  width: 75%; }

td.col-sm-10, th.col-sm-10 {
  width: 83.33333%; }

td.col-sm-11, th.col-sm-11 {
  width: 91.66667%; }

td.col-sm-12, th.col-sm-12 {
  width: 100%; }

td.col-md-1, th.col-md-1 {
  width: 8.33333%; }

td.col-md-2, th.col-md-2 {
  width: 16.66667%; }

td.col-md-3, th.col-md-3 {
  width: 25%; }

td.col-md-4, th.col-md-4 {
  width: 33.33333%; }

td.col-md-5, th.col-md-5 {
  width: 41.66667%; }

td.col-md-6, th.col-md-6 {
  width: 50%; }

td.col-md-7, th.col-md-7 {
  width: 58.33333%; }

td.col-md-8, th.col-md-8 {
  width: 66.66667%; }

td.col-md-9, th.col-md-9 {
  width: 75%; }

td.col-md-10, th.col-md-10 {
  width: 83.33333%; }

td.col-md-11, th.col-md-11 {
  width: 91.66667%; }

td.col-md-12, th.col-md-12 {
  width: 100%; }

td.col-lg-1, th.col-lg-1 {
  width: 8.33333%; }

td.col-lg-2, th.col-lg-2 {
  width: 16.66667%; }

td.col-lg-3, th.col-lg-3 {
  width: 25%; }

td.col-lg-4, th.col-lg-4 {
  width: 33.33333%; }

td.col-lg-5, th.col-lg-5 {
  width: 41.66667%; }

td.col-lg-6, th.col-lg-6 {
  width: 50%; }

td.col-lg-7, th.col-lg-7 {
  width: 58.33333%; }

td.col-lg-8, th.col-lg-8 {
  width: 66.66667%; }

td.col-lg-9, th.col-lg-9 {
  width: 75%; }

td.col-lg-10, th.col-lg-10 {
  width: 83.33333%; }

td.col-lg-11, th.col-lg-11 {
  width: 91.66667%; }

td.col-lg-12, th.col-lg-12 {
  width: 100%; }

td.col-xl-1, th.col-xl-1 {
  width: 8.33333%; }

td.col-xl-2, th.col-xl-2 {
  width: 16.66667%; }

td.col-xl-3, th.col-xl-3 {
  width: 25%; }

td.col-xl-4, th.col-xl-4 {
  width: 33.33333%; }

td.col-xl-5, th.col-xl-5 {
  width: 41.66667%; }

td.col-xl-6, th.col-xl-6 {
  width: 50%; }

td.col-xl-7, th.col-xl-7 {
  width: 58.33333%; }

td.col-xl-8, th.col-xl-8 {
  width: 66.66667%; }

td.col-xl-9, th.col-xl-9 {
  width: 75%; }

td.col-xl-10, th.col-xl-10 {
  width: 83.33333%; }

td.col-xl-11, th.col-xl-11 {
  width: 91.66667%; }

td.col-xl-12, th.col-xl-12 {
  width: 100%; }

5

면책 조항 :이 답변은 약간 오래되었을 수 있습니다. 부트 스트랩 4 베타 이후. 그 이후로 부트 스트랩이 변경되었습니다.

테이블 열 크기 클래스가 여기에서 변경되었습니다.

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

...에

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

이것은 열 너비를 설정할 때 작동하지 않는 것 같습니다. codeply.com/go/Utyon2XEB6
Zim


1
다른 질문은 관련이 없습니다. 내 대답에 설명 된 것처럼 BS4 alpha 6 flexbox 때문에 열 너비가 테이블 셀에서 작동하지 않습니다.
Zim

4

Bootstrap 4를 사용하여 다음 코드를 사용하여이 문제를 해결할 수 있습니다.

<table class="table">
  <tbody>
    <tr class="d-flex">
      <th class="col-3" scope="row">Indicador:</th>
      <td class="col-9">this is my indicator</td>
    </tr>

    <tr class="d-flex">
      <th class="col-3" scope="row">Definición:</th>
      <td class="col-9">This is my definition</td>
    </tr>

  </tbody>
</table>

1

Alpha 6부터 다음 sass 파일을 만들 수 있습니다.

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

이 코드는 전혀 작동하지 않습니다. 1.5 시간 동안 디버깅을 시도했지만 sass에 대한 제 지식이 너무 약해서 그렇게 할 수 없습니다. 다음에 작업 예제를 게시하십시오.
Slowwie
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.