CSS-стилизация Канбана — изменение размера и перестановка DIVS для соответствия содержимому

#html #css #asp.net #kanban

#HTML #css #asp.net #канбан

Вопрос:

Я разрабатывал плату Kanban для общей системы, которую мы поддерживаем в работе. У меня все основные функциональные возможности работают, но я немного зацикливаюсь на стилизации. На следующем скриншоте показано, что у меня есть в настоящее время:

введите описание изображения здесь

Существует основной DIV, который содержит все «столбцы / контейнеры», и это стилизовано:

 .kanban-board {
    height: calc(100% - 60px);
    width: calc(100%   20px);
    display: normal;
    padding-bottom: 0px;
    overflow-y: scroll;
}
  

Этот div содержит серию «контейнеров» — каждый серый столбец, стилизованный под другой DIV:

 .kanban-container {
    float: left;
    clear: right;
    margin: 20px 10px 0px 10px;
    border-radius: 5px;
    background-color: #eaebed;
    width: 300px;
    padding-bottom: 0px;
    padding-left: 6px;
    min-height: calc(50% - 20px);
    display: table;
}
  

и обратите внимание — этих «контейнеров» может быть любое количество, поэтому в настоящее время они переносятся на следующую строку, как показано на снимке экрана выше. Каждый «контейнерный» DIV содержит неупорядоченный сортируемый список (UL), и это стилизованный:

 .kanban-sortable {
    list-style-type: none;
    margin: 0;
    padding: 2px;
    min-height: 30px;
    border-radius: 5px;
    height: 100%;
    width: 285px;
    display: table-row;
}
  

Если вы посмотрите на скриншот, последний «контейнер» в первой строке выходит за пределы (минимальной) высоты других контейнеров… Кажется нормальным, пока самый длинный НЕ окажется последним в строке:

введите описание изображения здесь

Теперь это выглядит просто чепухой… И я понятия не имею, как это отсортировать. Я проверил некоторые другие примеры Канбана, и мой другой вариант — просто переместить страницу вправо с помощью полосы прокрутки X — но моя текущая спецификация требует, чтобы я исправил эту проблему.

Надеюсь, я предоставил достаточно информации для быстрого исправления. Кстати — я рад исправить любые другие ошибки новичков, которые я, возможно, допустил в своем примере.

ОБНОВЛЕНИЕ Я попробовал совет, данный для использования display: inline-block; (в .kanban-container) вместо:

 float: left;
display: table;
  

И трудно понять, устранило ли это мою проблему, поскольку автоматическое изменение размера высоты «контейнеров» больше не работает

введите описание изображения здесь

Ответ №1:

Поскольку вы используете значения с плавающей запятой, вам понадобится контейнер для каждой строки, который очищает предыдущую. Другим способом было бы удалить значение с плавающей точкой и установить для .kanban-container значение display: inline-block. Если вам нужны свойства таблицы в этом, вам придется добавить внутренний контейнер, но, честно говоря, я немного смущен всеми используемыми здесь стилями и !importants, которые идут с ними.

 <div class="kanban-row">
    <div class="kanban-container">
    <div class="kanban-container">
    ...
</div>
<div class="kanban-row">
    ...
  

css:

 .kanban-row {
    clear: left;
    overflow: hidden; // may not be necessary
}
.kanban-container {
    float: left;
}
  

или (без строк):

 .kanban-container {
    display: inline-block;
}
  

Комментарии:

1. Спасибо за ответ, Кьетил. Я обновил вопрос, чтобы удалить теги !important… Я точно не читал «книгу» о лучших практиках CSS и только время от времени заглядываю в нее, поэтому, пожалуйста, извините за любой «шум» в моем коде. Тем не менее, я рассмотрю ваши предложения… Любые рабочие примеры были бы высоко оценены! 🙂

2. Спасибо. Я только что обновил свой комментарий до того, что, надеюсь, будет ответом. Вы также можете захотеть проверить CSS display: flex. Это еще один способ заставить это работать.

3. Еще раз спасибо …! Моя первоначальная мысль здесь заключается в том, что в настоящее время, поскольку ширина каждого контейнера является окончательной, когда мы изменяем размер окна браузера, количество контейнеров в строке меняется… Вы предполагаете, что это будет соответствовать такому поведению? Еще раз, спасибо за ответы, чувак!

4. Тогда вариант встроенного блока был бы лучшим. Попробуйте. Это может немного изменить интервал, но вы можете это исправить.

5. Еще раз спасибо Kjetil — я попробовал это, но автоматическое определение высоты контейнеров больше не применяется… 🙁 Я не думаю, что у вас есть жесткое и быстрое решение для этого? 🙂