Я использую загрузочные таблицы с Angular 6 в проекте, и мне удалось создать вертикальную таблицу прокрутки с этим кодом:
<table class="table table-striped table-bordered" style="margin-bottom: 0">
<thead> <!-- Column names -->
<tr>
<th scope="col">#</th>
<th scope="col">Col 1</th>
<th scope="col">Col 2</th>
<th scope="col">Col 3</th>
...
<th scope="col">Col N</th>
</tr>
</thead>
<tbody> <!-- Data -->
<tr>
<th scope="row">1</th>
<td>AAAAA</td>
<td>BBBBB</td>
<td>CCCCC</td>
...
<td>DDDDD</td>
</tr>
<tr>
<th scope="row">2</th>
<td>AAAAA</td>
<td>BBBBB</td>
<td>CCCCC</td>
...
<td>DDDDD</td>
</tr>
...
<tr>
<th scope="row">n</th>
<td>AAAAA</td>
<td>BBBBB</td>
<td>CCCCC</td>
...
<td>DDDDD</td>
</tr>
</tbody>
</table>
И css:
tbody {
display:block;
max-height:500px;
overflow-y:auto;
}
thead, tbody tr {
display:table;
width:100%;
table-layout:fixed;
}
thead {
width: calc( 100% - 1em )
}
Но теперь, если есть много столбцов, это выглядит не очень хорошо.
Итак, я тоже хотел добавить горизонтальную прокрутку, поэтому я мог бы прокручивать всю таблицу горизонтально и только тело таблицы по вертикали. Для выполнения горизонтальной прокрутки, которую я использовал. table-responseive:
<div class="table-responsive">
<table class="table table-striped table-bordered" style="margin-bottom: 0">
...
</table>
</div>
Но он работает только без элемента вертикальной прокрутки в css.
Я хочу объединить эти два способа для прокрутки таблицы. Я изменил значения ширины в части css, от 100% до статических значений пикселей, таких как:
...
thead, tbody tr {
display:table;
width: 2000px;
table-layout:fixed;
}
thead {
width: calc( 2000px - 1em )
}
И это сработало, но мне нужно установить статическую ширину, и я не знаю, как это сделать динамически (в зависимости от количества colu mns).
Я исправил это следующим образом: Сначала я редактирую css, я удалил часть thead, и я добавил часть тела следующим образом:
Я также оставил таблицу .table -responsive div:
Затем я вычисляю -table-width в зависимости от количества столбцов и длины самого длинного имени столбца. Я делаю это с помощью Angular в моем компоненте .ts:
Мне нужно запустить calculateTableWidth () в начале в ngOnInit () (или когда я определил массив tableColumns) а затем, когда я изменяю размер окна:
И вот как я это исправил, теперь у меня есть хорошая таблица поиска с вертикальной и горизонтальной прокруткой.
Если у вас есть лучший способ сделать это, отправьте свое решение. Спасибо!