Вот очень простой метод.Вам нужно всего три строки кода.
Для широких экранов:
.footer-inner {
display: grid;
grid-auto-columns: 1fr;
}
.footer-inner > div {
grid-row: 1;
}
/* non-essential demo styles */
.footer-inner { background-color: gray; grid-gap: 1px; }
.footer-inner > div { background-color: lightgreen; text-align: center; padding: 5px;}
<div class="footer-inner">
<div>One</div>
<div>Two</div>
<div>Three</div>
<div>Four</div>
</div>
Для узких экранов:
.footer-inner {
display: grid;
grid-auto-columns: 1fr;
}
.footer-inner > div:first-child {
grid-column: span 3;
}
/* non-essential demo styles */
.footer-inner { background-color: gray; grid-gap: 1px; }
.footer-inner > div { background-color: lightgreen; text-align: center; padding: 5px;}
<div class="footer-inner">
<div>One</div>
<div>Two</div>
<div>Three</div>
<div>Four</div>
</div>
Пояснения
широкие экраны
*Свойство 1032 *grid-auto-columns
устанавливает ширину неявных столбцов.При установке значения 1fr
все созданные столбцы будут занимать одинаковое распределение свободного места в строке.С grid-row: 1
, примененным ко всем элементам, они появятся в первой строке.
узкие экраны
Как только вы установите первый элемент, чтобы охватить три неявных столбца, контейнер долженсоздать три столбца.Остальные элементы могут быть аккуратно помещены внизу во вновь созданных столбцах.
Наконец, рассмотрите возможность использования fr
единиц вместо процентов (например, 33,33%) в размере дорожки.Тогда вам не нужно беспокоиться о факторизации полей и разрывов сетки.Вот еще немного информации: Разница между процентами и франками в CSS Grid Layout