С CSS Сетка динамически c Количество столбцов легко.
.grid {
grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
}
// these .cells layout nicely
<div class="grid">
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
</div>
Но как насчет более сложных макетов с верхним или нижним колонтитулом?
// doesnt work
.grid {
grid-template-columns: 1fr, repeat(auto-fit, minmax(100px, 1fr)), 1fr;
}
<div class="grid">
<header></header>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<footer></footer>
</div>
Это кажется невозможным без запуска новой сетки путем обертывания ячеек в контейнере ... Это то, чего я надеюсь избежать, приняв сетку здесь.
Также используя шаблон области не работают, потому что дело в том, что верхний и нижний колонтитулы являются необязательными.
Возможна ли эта динамическая c природа с CSS Grid?
ОБНОВЛЕНИЕ
Это кажется невозможным.
Я использовал JS, чтобы изменить пользовательское свойство CSS для обновления столбцов сетки.
ОТВЕТ
Ручка Paulie_D ничего не решает, а скорее демонстрирует проблему.
Ответ в том, что это невозможно с CSS Grid. На самом деле почти во всех обстоятельствах нам нужно указывать столбцы. Что, к моему более раннему моменту, сводит на нет преимущества использования сетки IMO.
// HTML
<div class="grid">
<header></header>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<footer></footer>
</div>
// CSS
.grid {
grid-template-columns: 1fr 1fr 1fr;
}
header,footer {
grid-span: 1 / -1;
}