Я пытаюсь создать таблицу Tabulator внутри div, который имеет фиксированную высоту и ширину.
Однако, если столбцов / строк данных недостаточно для заполнения всей ширины или высоты элемента div, таблица Tabulator по-прежнему будет занимать всю высоту / ширину, заполняя только серый цвет в свободном пространстве.
Как я могу избавиться от этой серой области? Обратите внимание, что я не хочу изменять размер строк, а не столбцов.
function create_table() {
let table = new Tabulator("#table", {
data: [
{name: 'John', surname: 'Miller'},
{name: 'Mike', surname: 'Tyson'},
],
columns:[
{title: 'Name', field: 'name'},
{title: 'Surname', field: 'surname'},
]
})
}
create_table()
#table {
height: 200px;
width: 200px;
}
<!DOCTYPE HTML>
<html>
<head>
<!-- Tabulator -->
<link href="https://unpkg.com/tabulator-tables@4.2.7/dist/css/tabulator.min.css" rel="stylesheet">
<script type="text/javascript" src="https://unpkg.com/tabulator-tables@4.2.7/dist/js/tabulator.min.js"></script>
</head>
<body>
<div id="table"></div>
</body>
</html>
3 ответа
На данный момент у вас есть один из двух вариантов отображения таблицы:
- Если вы укажете высоту в таблице, она будет занимать эту высоту, и любое переполнение будет корректно управляться и разрешать прокрутку; если строк недостаточно для заполнения таблицы, она все равно занимает тот же объем пространства, и вы видите фон таблицы.
- Если вы не указываете высоту в таблице, это предполагает, что вы хотите, чтобы она занимала столько же высоты, сколько имеется строк, и что внешний div таблицы будет обрабатывать прокрутку
Таким образом, в вашем сценарии вы можете посмотреть на изменение цвета фона, чтобы сделать его более подходящим, но нет способа скрыть дополнительное пространство.
В следующей версии 4.6 (в начале 2020 г.) появится новый режим отображения, представляющий собой гибрид между этими двумя режимами, который позволит таблице расширяться до тех пор, пока она не переполнится, а затем обрабатывать прокрутку внутри таблицы.
ar selectedCount = function() {
var selectedRows = $("#example-table").tabulator("getSelectedRows").length;
$('#rowCount').text(selectedRows);
}
$("#example-table").tabulator({
height: 205,
layout: "fitColumns", //fit columns to width of table (optional)
columns: [ {title: 'Name', field: 'name'},
{title: 'Surname', field: 'surname'}
],
});
var tabledata = [
{name: 'John', surname: 'Miller'},
{name: 'Mike', surname: 'Tyson'},
];
//load sample data into the table
$("#example-table").tabulator("setData", tabledata);
selectedCount();
<div id="example-table"></div>
<p>
Number of selected rows = <span id="rowCount"></span>
</p>
As per my understanding, Please check the documentation provided to make the
columns to fit for the parent container http://tabulator.info/examples/4.4?#fittowidth
Please check the working example in the following https://jsfiddle.net/gzx72ukh/
Я изменил height
на max-height
. Решает ли это вашу проблему? Независимо от того, сколько строк, таблица не будет занимать более 200px
высоты.
Также добавили display: inline-block
и max-width: 200px
для настройки ширины вмещающего div
. Вы можете сделать таблицу прокручиваемой в любом или обоих направлениях, как только ширина и / или высота таблицы достигнет максимального значения, определенного в нем, div
.
function create_table() {
let table = new Tabulator("#table", {
data: [
{name: 'John', surname: 'Miller'},
{name: 'Mike', surname: 'Tyson'},
],
columns:[
{title: 'Name', field: 'name'},
{title: 'Surname', field: 'surname'},
]
})
}
create_table()
#table {
display: inline-block;
max-height: 200px;
max-width: 200px;
}
<!DOCTYPE HTML>
<html>
<head>
<!-- Tabulator -->
<link href="https://unpkg.com/tabulator-tables@4.2.7/dist/css/tabulator.min.css" rel="stylesheet">
<script type="text/javascript" src="https://unpkg.com/tabulator-tables@4.2.7/dist/js/tabulator.min.js"></script>
</head>
<body>
<div id="table"></div>
</body>
</html>
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Обратите внимание, что JavaScript — это НЕ Java. Включите все теги, относящиеся к вашему вопросу: например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [стройный] и т. д.