HTML 테이블에 가로 스크롤 막대 추가


142

HTML 테이블에 가로 스크롤 막대를 추가하는 방법이 있습니까? 실제로 테이블이 커지는 방식에 따라 세로 및 가로로 스크롤 할 수 있어야하지만 스크롤 막대가 나타나지 않습니다.


3
... 전체 테이블을 div에 넣는 것에 대해 생각 했습니까? ... div에 스크롤을 추가 하시겠습니까?
벡터

3
아마 어떤 대답을 받아 들여 대답으로 바꾸어야할까요?
Sroo Stroobandt

답변:


82

CSS overflow속성 을 사용해 보셨습니까 ?

overflow: scroll; /* Scrollbar are always visible */
overflow: auto;   /* Scrollbar is displayed as it's needed */

업데이트
다른 사용자가 지적했듯이 이것은 스크롤 막대를 추가하기에 충분하지 않습니다 .
따라서 아래의 의견과 답변을보고 찬성하십시오.


15
내 자신의 시도와 인터넷에서 읽은 다른 모든 것에 따르면 이것은 단순히 작동하지 않습니다. 래퍼 요소를 오버플로 할 수 있지만 테이블 자체는 아닙니다.
bloudermilk

21
@bloudermilk 추가하면 할 수 있습니다 display: block.
Cees Timmerman

244

먼저 display: block테이블을 만들어

그런 다음로 설정 overflow-x:하십시오 auto.

table {
    display: block;
    overflow-x: auto;
    white-space: nowrap;
}

좋고 깨끗합니다. 불필요한 형식이 없습니다.

다음은 내 웹 사이트의 페이지에서 스크롤 테이블 캡션과 관련된 예제입니다 .


3
이것은 Chrome에서 나에게 효과적이지만 모든 것을 함께 스쿼시 한 ​​후에 만 ​​가능합니다. white-space: nowrap;스크롤바를 즉시 볼 수 있습니다.
Cees Timmerman

28
나는 실제로 이것을 전에 시도했다. 유일한 문제는 테이블 셀이 더 이상 테이블의 전체 너비를 채우지 않는다는 것입니다.
Shevy

4
다른 사람들이 말했듯이 이것은 제대로 작동하지 않습니다. 테이블 행은 테이블 너비를 채우지 않습니다.
collimarco

1
@ SergeStroobandt 아니오, 제 경우 white-space: nowrap;에는 문제를 해결하지 못합니다 (Firefox에서 테스트). 행을 확장 할 내용 (텍스트)이 충분하지 않으면 행 너비가 테이블 너비보다 작습니다.
collimarco

3
@collimarco 참고 인라인 블록 옵션에는 max-width : 100 %를 사용해야했습니다.
dogoncouch

40

다음 스타일로 설정하여 테이블을 DIV로 랩핑하십시오.

div.wrapper {
  width: 500px;
  height: 500px;
  overflow: auto;
}

8
overflow:auto여기가 불필요 한 것 같습니다 . 너비를 설정하지 않고 이것을 달성하기 위해 어쨌든 알고 있습니까 ... 항상 HTML의 해결책 인 것처럼 보입니다. 어떤 너비 또는 높이를 하드 코딩하지만 레이아웃 엔진을 가지고있는 요점을 물리 치는 것 같습니다!
JonnyRaa

17

이를 위해 CSS 속성 " overflow "를 사용하십시오.

짧은 요약:

overflow: visible|hidden|scroll|auto|initial|inherit;

예 :

table {
    display: block;
    overflow: scroll;
}

링크가 끊어졌습니다
justingordon

12

@Serge Stroobandt가 제안한 솔루션으로 성공했지만 @Shevy가 셀에 문제가 발생하여 테이블의 전체 너비를 채우지 못했습니다. 에 스타일을 추가하여이 문제를 해결할 수있었습니다 tbody.

table {
  display: block;
  overflow-x: auto;
  white-space: nowrap;
}

table tbody {
  display: table;
  width: 100%;
}

이것은 Firefox, Chrome 및 Mac의 Safari에서 저에게 효과적이었습니다.


10

위의 솔루션 중 어떤 것도 작동하지 못했습니다. 그러나 나는 핵을 발견했다.

body {
  background-color: #ccc;
}

.container {
  width: 300px;
  background-color: white;
}

table {
  width: 100%;
  border-collapse: collapse;
}

td {
  border: 1px solid black;
}

/* try removing the "hack" below to see how the table overflows the .body */
.hack1 {
  display: table;
  table-layout: fixed;
  width: 100%;
}

.hack2 {
  display: table-cell;
  overflow-x: auto;
  width: 100%;
}
<div class="container">

  <div class="hack1">
    <div class="hack2">

      <table>
        <tr>
          <td>table or other arbitrary content</td>
          <td>that will cause your page to stretch</td>
        </tr>
        <tr>
          <td>uncontrollably</td>
          <td>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</td>
        </tr>
      </table>

    </div>
  </div>

</div>


위의 어느 것도 나에게도 효과가 없었지만 이것은 효과가있었습니다. 고마워요
Gábriel

@ Gabriel Glad 그것은 당신을 위해 일했습니다. 나는 파이어 폭스에서 지금 다시 시도하고 올바르게 렌더링하지 않는 것 :-( i.imgur.com/BcjSaCV.png 크롬은 여전히 보인다 좋아.
mpen

1
이상한; Firefox에서 정확히 사용하고 있었지만이 정확한 설정은 아니지만 작동했습니다. 접힌 테두리와 최대 너비 + overflow-x가있는 10 x 10 px div로 구성된 큰 격자를 렌더링하고 싶었습니다. 자동이 핵심이었습니다. 그 자리에 모든 것이 완벽 해 보였습니다. 또한 table, table-row 및 table-cell과 함께 <table>을 전혀 사용하지 않고 div 만 사용합니다.
가브리엘

10

이것은 Serge Stroobandt의 답변을 개선 한 것으로 완벽하게 작동합니다. 열이 적을 경우 전체 페이지 너비를 채우지 않는 테이블 문제를 해결합니다.

<style> 
 .table_wrapper{
    display: block;
    overflow-x: auto;
    white-space: nowrap;
}
</style>

<div class="table_wrapper">
<table>
...
</table>
</div>

2
white-space: nowrap;선택 사양 일 것으로 보인다.
Mike Shiyan


2

나는 이전 솔루션을 기반 으로이 답변을 알아 냈으며 의견 이며 내 자신의 조정을 추가했습니다. 이것은 반응 형 테이블에서 나를 위해 작동합니다.

table {
  display: inline-block;
  overflow-x: auto;
  white-space: nowrap;
  // make fixed table width effected by overflow-x
  max-width: 100%;
  // hide all borders that make rows not filled with the table width
  border: 0;
}
// add missing borders
table td {
  border: 1px solid;
}

@Saeed html 구조와 같은 것을 의미 했습니까?
조지

내 나쁜, 더 나은 이해를 돕기 위해 더 많은 설명을 추가하는 것을 의미합니다
Mastisa

이 버전이 더 명확 해지기를 바랍니다.
조지

1

테이블의 '100 % 이상의 너비'는 실제로 나를 위해 일했습니다.

.table-wrap {
    width: 100%;
    overflow: auto;
}

table {
    table-layout: fixed;
    width: 200%;
}


-2
//Representation of table
<div class="search-table-outter">
<table class="table table-responsive search-table inner">
</table>
</div>

//Css to make Horizontal Dropdown

<style>

    .search-table{table-layout: auto; margin:40px auto 0px auto; }
    .search-table, td, th {
        border-collapse: collapse;
    }
th{padding:20px 7px; font-size:15px; color:#444;}
td{padding:5px 10px; height:35px;}
    .search-table-outter { overflow-x: scroll; }
th, td { min-width: 200px; }


</style>

들여 쓰기 및 샘플 데이터는 무언가를 시연하려는 경우 도움이됩니다. 또한 "드롭 다운"대신 "스크롤바"를 의미 했습니까?
Cees Timmerman
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.