Додайте горизонтальну смугу прокрутки до таблиці HTML


142

Чи можна додати горизонтальну смугу прокрутки до таблиці HTML? Насправді мені потрібно, щоб він прокручувався як вертикально, так і горизонтально, залежно від того, як росте таблиця, але я не можу отримати жодну смугу прокрутки, щоб вона з’явилася.


3
... думали над тим, як скласти весь стіл у діви? ... потім додати прокрутку до діва?
вектор

3
Можливо, час змінити, яка відповідь буде прийнятою відповіддю?
Серж Стротобандт

Відповіді:


82

Ви спробували overflowвластивість CSS ?

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
Я насправді пробував це раніше. Єдине питання полягало в тому, що комірки таблиці більше не заповнювали всю ширину таблиці.
Шеві

4
За словами інших, це не працює належним чином: рядки таблиці не заповнюють ширину таблиці.
collimarco

1
@SergeStroobandt ні, в моєму випадку white-space: nowrap;проблема не вирішує (тестується на Firefox). Ширина рядків менша за ширину таблиці, коли недостатньо вмісту (тексту) для розширення рядків.
collimarco

3
@collimarco Примітка. Для опції вбудованого блоку мені довелося використовувати максимальну ширину: 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 та Safari на Mac.


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 Радий, що це працювало на тебе. Я спробував його знову лише у Firefox, і він, здається, не відображається правильно :-( i.imgur.com/BcjSaCV.png Chrome все ще виглядає добре.
19

1
Дивний; Я використовував його саме на Firefox, і він працював там - хоча не в цій точній установці. Мені хотілося зробити велику сітку, що складається з 10-х роздільних знаків 10 х 10 пікселів із згорнутими рамками та шириною змішаного файлу + переповнення-х: автоматично, здавалося, було ключовим. З тими на місці все виглядало ідеально. Крім того, я не використовую <table> взагалі, тільки діви, із відображенням: table, table-row та table-cell.
Гавриїла ,

10

Це вдосконалення відповіді Сержа Стройбандта і працює чудово. Він вирішує питання про таблицю, не заповнюючи всю ширину сторінки, якщо у неї менше стовпців.

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

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

2
white-space: nowrap;, Здається необов'язковим.
Майк Шиян


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?
Джордж

Моє погано, я маю на увазі додати більше пояснень, щоб допомогти зрозуміти це краще
Мастіса

Сподіваюсь, ця версія більш уточнена.
Джордж

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.