Выравнивание ячейки строки заголовка сетки
Я использую slick grid для отображения данных в сетке. Слайковая сетка вычисляет все вещи, такие как высота, ширина, когда создается определенная сетка, и сетка выглядит очень хорошо.
Проблема возникает при создании сетки, но она скрыта и при действии чего-то еще (флажок/переключатель выбора) сетка становится видимой. на этот раз расчет идет наперекосяк, а заголовки и ячейки строк (столбец для заголовка) не выровнены по вертикали.
![enter image description here]()
Я не могу понять, как это контролировать. Если кто-то еще пострадал от рук пятна сетки и смог защитить себя, пожалуйста, обнажите боеприпасы.
В ожидании,
Premanshu
Ответы
Ответ 1
Ни один из этих решений не работал у меня, может быть, потому что код SlickGrid изменился с 2012 года:)
Я нашел решение в этом post, это похоже на @Wex's, но с небольшими отличиями:
.slickgrid,
.slickgrid *,
.slick-header-column {
box-sizing: content-box;
-moz-box-sizing: content-box;
-webkit-box-sizing: content-box;
}
Где .slickgrid
- это селектор элемента контейнера сетки.
Ответ 2
У меня была аналогичная проблема при использовании ее на странице, на которой была загружена твиттер bootstrap css. Решение заключалось в том, чтобы переопределить размер окна в поле содержимого
*, *: before, *: after {
-webkit-box-sizing: content-box;
-moz-box-size: content-box;
box-size: content-box;
}
вероятно, должен выяснить, какие именно классы действительно нуждаются в нем, но это отсортированные вещи для меня.
Ответ 3
Мне удалось заставить это работать в bootstrap 3 (среда, где box-sizing
установлена на border-box
), просто применяя box-sizing: content-box
к .slick-header-column
.
.slick-header > .slick-header-columns > .slick-header-column {
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box; }
Просто будьте осторожны при изменении свойств border
.slick-header-column
. Я смог удалить границу справа, установив цвет на transparent
:
.slick-header > .slick-header-columns > .slick-header-column:last-child {
border-right-color: transparent;
}
Примечание. Вы можете играть со спецификой селектора - селектор, который вы переписываете:
.slick-header-column.ui-state-default { ... }
Ответ 4
У меня была аналогичная проблема при динамическом отображении/скрытии сеток с использованием JQuery .show()
и .hide()
.
Если вы создаете тег div
с помощью display: none
(поэтому он изначально скрыт), столбцы сетки не инициализируются должным образом. Чтобы обойти это, я создаю тег div visibility: hidden
и удаляю этот стиль перед использованием методов .hide()
и .show()
.
Мой код выглядит примерно так:
<div id="mygrid" style="visibility: hidden"></div>
$grid = $("#mygrid")
grid = new Slick.Grid($grid, gridData, gridColumns, gridOptions);
// Hide grid by default, remembering to remove the visibility style
$grid.hide();
$grid.css("visibility", "visible");
// You can now show and hide the grid using normal jQuery methods
$grid.show();
$grid.hide();
Как только он инициализируется и свойство visibility: hidden;
удаляется, я использую .hide()
и .show()
, но я подозреваю, что это сработает, если вы будете манипулировать атрибутом display: none;
напрямую, если вы не используете JQuery.
Надеюсь, что это поможет.
Ответ 5
У меня была одна и та же проблема, и после прочтения ответов от @Premanshu и @Tin я нашел другой способ ее решения.
В основном вам нужно пропустить цикл событий и позволить DOM догнать до отображения сетки, что позволит найти правильные ширины столбцов. Я использовал setTimeout для этого.
var myGrid = $("<div id='myGrid' style='width:600px;height:500px;'></div>");
grid = new Slick.Grid(myGrid, data, columns, options);
// ... later on, append the container to the DOM and initialize SlickGrid
setTimeout(function(){
myGrid.appendTo(that.$el);
grid.init();
},1);
Ответ 6
Это поддерживается и не должно происходить. Фактически, большинство примеров (в том числе http://mleibman.github.com/SlickGrid/examples/example1-simple.html) имеют такую же реализацию, чтобы убедиться, что она работает правильно.
Можете ли вы включить ревью jsfiddle.net?
Ответ 7
Решил это для меня.
Это то, что я делал:
1. Инициализация сетки
2. добавить к нему данные
3. Представьте его с использованием модала div, содержащего сетку
Чтобы решить, я сделал следующее:
1. Представьте его, используя модальный div, содержащий сетку
2. Инициализация сетки
3. Добавить данные
Ответ 8
В GitHub этот пост ответьте на проблему.