Я создал адаптивную сетку, которая должна содержать строки из 4, 3, 2 или 1 элемента, в зависимости от размера окна. Жесткое требование от Design состоит в том, что не допускаются вдовы и наполовину заполненные строки. Итак, для 11 элементов может быть две строки по четыре элемента и одна из трех, или три строки по три элемента и одна из двух элементов, или ... Вы уловили идею.
Чтобы решить эту проблему, я создал css сетку :
display: grid;
grid-template-columns: repeat(auto-fit, minmax(264px, 1fr));
grid-gap: 24px;
Это отлично работает для изменения размера, но не позаботьтесь о проблеме вдовы. Сначала я применил наивный подход, выбрав последний элемент с помощью селектора last-of-type
и придав ему стиль grid-row: 1 / -1
, но это не гарантирует, что строка выше будет полностью заполнена.
Я думаю, что выиграл Это не единственное решение css. Есть ли способ для элемента понять, что он один в строке или что он должен расти, чтобы заполнить строку? У меня была идея использовать свойство nextSibling
, чтобы выбрать последнего дочернего элемента через JavaScript и, возможно, определить по смещению страницы, заполняет ли он всю строку. Но моя проблема в том, что я не могу жестко запрограммировать ширину экрана.
В качестве альтернативы, есть ли способ указать элементу распространяться до конца строки? Я пробовал это, но это не сработало:
.card:last-of-type {
grid-column-end: span -1;
}
Щелкните здесь , чтобы просмотреть минимальный воспроизводимый пример.