Кратко
СкопированоМегашорткат, позволяющий задать значения всему и сразу. А конкретно с его помощью можно указать значения для следующих свойств:
grid
;- template - rows grid
;- template - columns grid
;- template - areas grid
;- auto - rows grid
;- auto - columns grid
.- auto - flow
Пример
СкопированоТакой блок кода:
.container { grid: 50px 150px / 2fr 1fr;}
.container { grid: 50px 150px / 2fr 1fr; }
...будет аналогичен этому коду:
.container { grid-template-rows: 50px 150px; grid-template-columns: 2fr 1fr;}
.container { grid-template-rows: 50px 150px; grid-template-columns: 2fr 1fr; }
Как пишется
Скопированоnone
СкопированоЗначение по умолчанию. Это ключевое слово сбрасывает значения для всех свойств, входящих в этот шорткат.
.container { display: grid; grid: none;}
.container { display: grid; grid: none; }
Значение для grid-template
СкопированоМожно указать допустимые значения для шортката grid
:
.container { display: grid; grid: repeat(4, 150px) / 1fr 200px 1fr;}
.container { display: grid; grid: repeat(4, 150px) / 1fr 200px 1fr; }
В том числе можно указать имена для линий:
.container { display: grid; grid: [row1-start] 25px [row1-end row2-start] 25px [row2-end] / auto 50px auto;}
.container { display: grid; grid: [row1-start] 25px [row1-end row2-start] 25px [row2-end] / auto 50px auto; }
Размеры колонок и рядов
СкопированоСоздадим два ряда и две колонки:
.container { display: grid; grid: 200px 100px / 30% 30%;}
.container { display: grid; grid: 200px 100px / 30% 30%; }
auto-flow
СкопированоКлючевое слово auto
даёт браузеру понять, что создавать при необходимости: колонки или ряды.
Если auto
стоит справа от слэша, то будут создаваться автоматические колонки:
.container { display: grid; grid: 200px 100px / auto-flow 30%;}
.container { display: grid; grid: 200px 100px / auto-flow 30%; }
Если auto
стоит слева от слэша, то будут создаваться автоматические ряды:
.container { display: grid; grid: auto-flow 30% / 200px 100px;}
.container { display: grid; grid: auto-flow 30% / 200px 100px; }
dense
СкопированоК ключевому слову auto
можно добавить dense
. Оно укажет браузеру, что элементы должны стараться заполнить свободные ячейки. Подробнее про работу этого ключевого слова можно почитать в статье про grid
.
Важно ставить это слово сразу после auto
:
.container { display: grid; grid: auto-flow dense 30% / 200px 100px;}
.container { display: grid; grid: auto-flow dense 30% / 200px 100px; }
Подсказки
Скопировано💡 Перед тем как соблазниться возможностью расписать всё в одном свойстве, дважды (а то и трижды) подумайте о читабельности кода. Учтите и то, что гриды не такая уж простая технология. Не каждый коллега сможет прочесть этот шорткат.
- Chrome 66, поддерживается
- Edge 79, поддерживается
- Firefox 76, поддерживается
- Safari 12.1, поддерживается
На практике
Скопированосоветует Скопировано
🛠 Возможны и более сложные комбинации значений этого свойства. Например, можно сразу задать имена областям:
.container { grid: [row1-start] "header header header" 1fr [row1-end] [row2-start] "footer footer footer" 25px [row2-end] / auto 50px auto;}
.container { grid: [row1-start] "header header header" 1fr [row1-end] [row2-start] "footer footer footer" 25px [row2-end] / auto 50px auto; }
Что аналогично:
.container { grid-template-areas: "header header header" "footer footer footer"; grid-template-rows: [row1-start] 1fr [row1-end row2-start] 25px [row2-end]; grid-template-columns: auto 50px auto;}
.container { grid-template-areas: "header header header" "footer footer footer"; grid-template-rows: [row1-start] 1fr [row1-end row2-start] 25px [row2-end]; grid-template-columns: auto 50px auto; }