Добавить горизонтальную полосу прокрутки в HTML-таблицу - PullRequest
101 голосов
/ 04 апреля 2011

Есть ли способ добавить горизонтальную полосу прокрутки в таблицу HTML? Мне действительно нужно, чтобы его можно было прокручивать как по вертикали, так и по горизонтали, в зависимости от того, как растет таблица, но я не могу отобразить ни одну полосу прокрутки.

Ответы [ 11 ]

166 голосов
/ 24 мая 2015

Сначала сделайте display: block вашего стола

, затем установите overflow-x: на auto.

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

Красиво и чисто.Нет лишнего форматирования.

Вот более сложные примеры с прокруткой заголовков таблицы со страницы на моем сайте.

65 голосов
/ 04 апреля 2011

Вы пробовали свойство CSS overflow?

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

ОБНОВЛЕНИЕ
Как указывают другие пользователи, этого недостаточно для добавленияполосы прокрутки.
Так что, пожалуйста, смотрите и оставляйте комментарии и ответы ниже.

36 голосов
/ 04 апреля 2011

Обернуть таблицу в DIV, заданный в следующем стиле:

div.wrapper {
  width: 500px;
  height: 500px;
  overflow: auto;
}
16 голосов
/ 04 апреля 2011

Используйте для этого атрибут CSS " overflow ".

Краткое резюме:

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

, например

table {
    display: block;
    overflow: scroll;
}
8 голосов
/ 27 декабря 2013

Я столкнулся с той же проблемой. Я обнаружил следующее решение, которое было протестировано только в Chrome v31:

table {
    table-layout: fixed;
}

tbody {
    display: block;
    overflow: scroll;
}
7 голосов
/ 12 февраля 2018

Мне не удалось заставить работать ни одно из перечисленных выше решений. Тем не менее, я нашел взлом:

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>
5 голосов
/ 18 сентября 2018

Это улучшение ответа Сержа Штробандта и работает отлично. Это решает проблему незаполнения таблицы на всю ширину страницы, если в ней меньше столбцов.

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

<div class="table_wrapper">
<table>
...
</table>
</div>
3 голосов
/ 18 октября 2018

У меня был хороший успех с решением, предложенным @Serge Stroobandt, но я столкнулся с проблемой, возникшей у @Shevy с ячейками, которые не заполняли всю ширину таблицы.Я смог исправить это, добавив некоторые стили к tbody.

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

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

. Это сработало для меня в Firefox, Chrome и Safari на Mac.

2 голосов
/ 15 августа 2018

Я разобрался с этим ответом на основе предыдущего решения и его комментарием и добавил некоторые свои собственные корректировки. Это работает для меня на адаптивном столе.

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;
}
1 голос
/ 21 декабря 2018

«Ширина таблицы более 100%» действительно заставила меня работать.

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

table {
    table-layout: fixed;
    width: 200%;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...