РаÑположение ÑлеменÑов по гÑид-линиÑм Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ CSS Grid
Ð ÑÑаÑÑе, каÑавÑейÑÑ Ð¾ÑновнÑÑ Ð¿Ð¾Ð½ÑÑий позиÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑлеменÑов Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð³Ñидов, Ð¼Ñ ÐºÑаÑенÑко ÑаÑÑмоÑÑели, как ÑаÑполагаÑÑ ÑлеменÑÑ Ð² гÑиде, иÑполÑзÑÑ Ð½Ð¾Ð¼ÐµÑа линий. ТепеÑÑ Ð´Ð°Ð²Ð°Ð¹Ñе деÑалÑно иÑÑледÑем Ñо, как ÑабоÑÐ°ÐµÑ ÑÑа ÑÑндаменÑалÑÐ½Ð°Ñ ÑаÑÑÑ ÑпеÑиÑикаÑии.
СобÑÑвенно, наÑаÑÑ ÐºÐ²ÐµÑÑ Ð¿Ð¾ гÑидам Ñо знакомÑÑва Ñ Ð¿ÑонÑмеÑованнÑми линиÑми - логиÑно, поÑÐ¾Ð¼Ñ ÑÑо в ÑиÑÑаÑии, когда Ð²Ñ ÑабоÑаеÑе Ñ Ð³Ñидами, пÑонÑмеÑованнÑе линии Ñ Ð²Ð°Ñ ÐµÑÑÑ Ð²Ñегда. Ðинии нÑмеÑÑÑÑÑÑ Ð¸ Ð´Ð»Ñ ÐºÐ¾Ð»Ð¾Ð½Ð¾Ðº, и Ð´Ð»Ñ ÑÑÑок, оÑÑÑÑÑ Ð½Ð°ÑинаеÑÑÑ Ñ 1. ÐÑжно замеÑиÑÑ, ÑÑо гÑид индекÑиÑÑеÑÑÑ Ð² ÑооÑвеÑÑÑвии Ñ Ñежимом напиÑÐ°Ð½Ð¸Ñ (writing mode) докÑменÑа. Ð ÑзÑÐºÐ°Ñ Ñ Ð½Ð°Ð¿Ð¸Ñанием Ñлева напÑаво, ÑÐ°ÐºÐ¸Ñ ÐºÐ°Ðº ÑÑÑÑкий, напÑимеÑ, Ð»Ð¸Ð½Ð¸Ñ 1 - ÑÐ°Ð¼Ð°Ñ Ð»ÐµÐ²Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ð³Ñида. ÐÑли напиÑание ÑпÑава налево, Ñо Ð»Ð¸Ð½Ð¸Ñ 1 бÑдеÑ, ÑооÑвеÑÑÑвенно, Ñамой пÑавой линией в гÑиде. Ðо Ñ Ð¾Ð´Ñ Ð¸Ð·ÑÑÐµÐ½Ð¸Ñ Ð½ÐµÐ´Ñ Ð¼Ñ Ð´ÐµÑалÑно Ñзнаем, как гÑÐ¸Ð´Ñ Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð´ÐµÐ¹ÑÑвÑÑÑ Ñ Ñежимами напиÑаниÑ, поÑÑÐ¾Ð¼Ñ Ð½Ðµ иÑÑезайÑе, впеÑеди много инÑеÑеÑного.
ÐазовÑй пÑимеÑ
РкаÑеÑÑве кÑайне пÑоÑÑого пÑимеÑа давайÑе возÑмÑм гÑид Ñ ÑÑÐµÐ¼Ñ ÑÑеками-колонками и ÑÑÐµÐ¼Ñ ÑÑеками-ÑÑÑоками. Такой гÑид даÑÑ Ð½Ð°Ð¼ по 4 линии Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ напÑавлениÑ.
ÐнÑÑÑи наÑего гÑид-конÑейнеÑа Ñ Ð½Ð°Ñ ÐµÑÑÑ ÑеÑÑÑе доÑеÑÐ½Ð¸Ñ ÑлеменÑа. ÐÑли Ð¼Ñ Ð½Ðµ ÑазмеÑаем Ð¸Ñ ÑвнÑм обÑазом, ÑÑи ÑлеменÑÑ Ð±ÑдÑÑ ÑаÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ñ Ð² гÑиде в ÑооÑвеÑÑÑвии Ñ Ð¿Ñавилами авÑоÑазмеÑениÑ, Ñо еÑÑÑ, по Ð¾Ð´Ð½Ð¾Ð¼Ñ ÑлеменÑÑ - в каждой из ÑеÑÑÑÑÑ Ð¿ÐµÑвÑÑ ÑÑеек. ÐÑли Ð²Ñ Ð²Ð¾ÑполÑзÑеÑеÑÑ Firefox Grid Highlighter , Ñо ÑвидиÑе, как гÑид иниÑииÑÑÐµÑ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ¸ и ÑÑÑоки.

.wrapper {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(3, 100px);
}
<div class="wrapper">
<div class="box1">One</div>
<div class="box2">Two</div>
<div class="box3">Three</div>
<div class="box4">Four</div>
</div>
ÐозиÑиониÑование ÑлеменÑов по номеÑам линий
ÐÑ Ð¼Ð¾Ð¶ÐµÐ¼ воÑполÑзоваÑÑÑÑ ÑазмеÑением по линиÑм (line-based placement), ÑÑÐ¾Ð±Ñ ÑаÑположиÑÑ ÑлеменÑÑ Ð½Ð° гÑиде. ÐапÑимеÑ, нам нÑжно, ÑÑÐ¾Ð±Ñ Ð¿ÐµÑвÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð½Ð°ÑиналÑÑ Ð¾Ñ Ð»ÐµÐ²Ð¾Ð³Ð¾ кÑÐ°Ñ Ð¸ занимал один ÑÑек-колонкÑ. ÐÑÑÑÑ Ð¾Ð½ Ñакже наÑинаеÑÑÑ Ñ Ð¿ÐµÑвой ÑÑÑоÑной линии, Ñо еÑÑÑ, Ð¾Ñ Ð²ÐµÑÑ Ð½ÐµÐ³Ð¾ кÑÐ°Ñ Ð³Ñида, и Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð¿ÑоÑÑÑанÑÑво до ÑеÑвÑÑÑой ÑÑÑоÑной линии.
.box1 {
grid-column-start: 1;
grid-column-end: 2;
grid-row-start: 1;
grid-row-end: 4;
}
ÐÑли Ð²Ñ Ñвно позиÑиониÑÑеÑе одни ÑлеменÑÑ, дÑÑгие ÑлеменÑÑ Ð³Ñида по-пÑÐµÐ¶Ð½ÐµÐ¼Ñ ÑазмеÑаÑÑÑÑ Ð² ÑооÑвеÑÑÑвии Ñ Ð¿Ñавилами авÑоÑазмеÑениÑ. ÐалÑÑе Ð¼Ñ Ð´ÐµÑалÑно ÑаÑÑмоÑÑим, как ÑÑо пÑоиÑÑ Ð¾Ð´Ð¸Ñ, а пока Ð²Ñ Ð¸ Ñами могли замеÑиÑÑ, ÑÑо по меÑе ÑазмеÑÐµÐ½Ð¸Ñ Ð¾Ð´Ð½Ð¸Ñ ÑлеменÑов, оÑÑавÑиеÑÑ ÑлеменÑÑ Ð·Ð°Ð½Ð¸Ð¼Ð°ÑÑ Ð¿ÑÑÑÑе ÑÑейки гÑида.
ÐÐ°Ð´Ð°Ð²Ð°Ñ Ð°Ð´ÑеÑа Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑлеменÑа по оÑделÑноÑÑи, Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ ÑазмеÑÑиÑÑ Ð²Ñе наÑи ÑеÑÑÑе ÑлеменÑа по колонкам и ÑÑÑокам. ÐамеÑÑÑе, ÑÑо пÑи желании можно оÑÑавиÑÑ ÑÑейки пÑÑÑÑми. Ðдна из ÑамÑÑ Ð¿ÑиÑÑнÑÑ Ð²ÐµÑей пÑи ÑабоÑе Ñ Grid Layout - возможноÑÑÑ ÑоздаваÑÑ Ð½ÐµÐ³Ð°Ñивное пÑоÑÑÑанÑÑво (пÑÑÑÑе облаÑÑи в макеÑе) без кÑвÑÑков ÑеÑез Ð³Ð¾Ð»Ð¾Ð²Ñ Ð¸ пÑоÑÐ¸Ñ Ñ Ð°ÐºÐ¾Ð².
<div class="wrapper">
<div class="box1">One</div>
<div class="box2">Two</div>
<div class="box3">Three</div>
<div class="box4">Four</div>
</div>
.box2 {
grid-column-start: 3;
grid-column-end: 4;
grid-row-start: 1;
grid-row-end: 3;
}
.box3 {
grid-column-start: 2;
grid-column-end: 3;
grid-row-start: 1;
grid-row-end: 2;
}
.box4 {
grid-column-start: 2;
grid-column-end: 4;
grid-row-start: 3;
grid-row-end: 4;
}
СокÑаÑÐµÐ½Ð¸Ñ grid-column и grid-row
ÐÑ Ð½Ð°Ð¿Ð¸Ñали много кода, ÑÑÐ¾Ð±Ñ ÑазмеÑÑиÑÑ ÐºÐ°Ð¶Ð´Ñй ÑлеменÑ. ÐеÑдивиÑелÑно, ÑÑо ÑÑÑеÑÑвÑÐµÑ ÐºÑаÑÐºÐ°Ñ ÑоÑма запиÑи ÑвойÑÑв. grid-column-start и grid-column-end могÑÑ Ð±ÑÑÑ Ð¾Ð±ÑÐµÐ´Ð¸Ð½ÐµÐ½Ñ Ð² одном grid-column, а grid-row-start и grid-row-end - в grid-row.
<div class="wrapper">
<div class="box1">One</div>
<div class="box2">Two</div>
<div class="box3">Three</div>
<div class="box4">Four</div>
</div>
.box1 {
grid-column: 1 / 2;
grid-row: 1 / 4;
}
.box2 {
grid-column: 3 / 4;
grid-row: 1 / 3;
}
.box3 {
grid-column: 2 / 3;
grid-row: 1 / 2;
}
.box4 {
grid-column: 2 / 4;
grid-row: 3 / 4;
}
РаÑположение ÑлеменÑа по ÑмолÑаниÑ
РпÑимеÑаÑ
вÑÑе Ð¼Ñ Ð·Ð°Ð´Ð°Ð²Ð°Ð»Ð¸ конеÑнÑÑ Ð»Ð¸Ð½Ð¸Ñ Ð´Ð»Ñ ÑÑÑоки и колонки, ÑÑÐ¾Ð±Ñ Ð¿ÑодемонÑÑÑиÑоваÑÑ ÑабоÑÑ ÑвойÑÑв, однако, еÑли ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ ÑолÑко один ÑÑек, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе опÑÑÑиÑÑ Ð·Ð½Ð°Ñение grid-column-end или grid-row-end. ÐÑид по ÑмолÑÐ°Ð½Ð¸Ñ ÑазмеÑÐ°ÐµÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ñаким обÑазом, ÑÑÐ¾Ð±Ñ Ð¾Ð½ занимал вÑего один ÑÑек. ÐÑо знаÑиÑ, ÑÑо Ð´Ð»Ð¸Ð½Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑ ÑвойÑÑв в наÑем пеÑвонаÑалÑном пÑимеÑе Ð¼Ð¾Ð¶ÐµÑ Ð²ÑглÑдеÑÑ Ð²Ð¾Ñ Ñак:
<div class="wrapper">
<div class="box1">One</div>
<div class="box2">Two</div>
<div class="box3">Three</div>
<div class="box4">Four</div>
</div>
.box1 {
grid-column-start: 1;
grid-row-start: 1;
grid-row-end: 4;
}
.box2 {
grid-column-start: 3;
grid-row-start: 1;
grid-row-end: 3;
}
.box3 {
grid-column-start: 2;
grid-row-start: 1;
}
.box4 {
grid-column-start: 2;
grid-column-end: 4;
grid-row-start: 3;
}
ÐоÑÑомÑ, еÑли Ð¼Ñ Ñ Ð¾Ñим, ÑÑÐ¾Ð±Ñ ÑлеменÑÑ Ð·Ð°Ð½Ð¸Ð¼Ð°Ð»Ð¸ ÑолÑко один ÑÑек, наÑа ÑокÑаÑÑÐ½Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑ Ð±ÑÐ´ÐµÑ Ð²ÑглÑдеÑÑ Ð²Ð¾Ñ Ñак, без ÑлеÑа и без вÑоÑого знаÑениÑ:
<div class="wrapper">
<div class="box1">One</div>
<div class="box2">Two</div>
<div class="box3">Three</div>
<div class="box4">Four</div>
</div>
.box1 {
grid-column: 1;
grid-row: 1 / 4;
}
.box2 {
grid-column: 3;
grid-row: 1 / 3;
}
.box3 {
grid-column: 2;
grid-row: 1;
}
.box4 {
grid-column: 2 / 4;
grid-row: 3;
}
СвойÑÑво grid-area
ÐÑ Ð¼Ð¾Ð¶ÐµÐ¼ пойÑи еÑÑ Ð´Ð°Ð»ÑÑе и опÑеделиÑÑ ÑелÑÑ Ð¾Ð±Ð»Ð°ÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ единÑÑвенного ÑвойÑÑва â grid-area. ÐоÑÑдок ÑвойÑÑв Ð´Ð»Ñ Ð³Ñид-облаÑÑи ÑледÑÑÑий:
- grid-row-start
- grid-column-start
- grid-row-end
- grid-column-end
<div class="wrapper">
<div class="box1">One</div>
<div class="box2">Two</div>
<div class="box3">Three</div>
<div class="box4">Four</div>
</div>
.box1 {
grid-area: 1 / 1 / 4 / 2;
}
.box2 {
grid-area: 1 / 3 / 3 / 4;
}
.box3 {
grid-area: 1 / 2 / 2 / 3;
}
.box4 {
grid-area: 3 / 2 / 4 / 4;
}
ÐоÑÑдок знаÑений Ð´Ð»Ñ grid-area Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð½ÐµÐ¼Ð½Ð¾Ð³Ð¾ ÑÑÑаннÑм, он пÑоÑивоположен ÑÐ¾Ð¼Ñ Ð¿Ð¾ÑÑдкÑ, в коÑоÑом мÑ, напÑимеÑ, запиÑÑваем знаÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑокÑаÑÑннÑÑ
ÑвойÑÑв margin и padding. Ðо Ñделано ÑÑо поÑомÑ, ÑÑо гÑид ÑабоÑÐ°ÐµÑ Ñ Ð½Ð°Ð¿ÑавлениÑми оÑноÑиÑелÑно поÑока, опÑеделÑннÑми в ÑпеÑиÑикаÑии CSS Writing Modes. РдалÑнейÑем Ð¼Ñ ÑаÑÑмоÑÑим, как гÑÐ¸Ð´Ñ Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð´ÐµÐ¹ÑÑвÑÑÑ Ñ Ñежимами напиÑÐ°Ð½Ð¸Ñ (writing modes), но пока давайÑе пÑимем за данноÑÑÑ, ÑÑо Ð¼Ñ Ð¸Ð¼ÐµÐµÐ¼ дело Ñ ÐºÐ¾Ð½ÑепÑией ÑеÑÑÑÑÑ
напÑавлений оÑноÑиÑелÑно поÑока:
- block-start (наÑало блока)
- block-end (ÐºÐ¾Ð½ÐµÑ Ð±Ð»Ð¾ÐºÐ°)
- inline-start (наÑало ÑÑÑоки)
- inline-end (ÐºÐ¾Ð½ÐµÑ ÑÑÑоки)
ÐÑ ÑабоÑаем Ñ ÑÑÑÑким, ÑзÑком Ñ Ð½Ð°Ð¿Ð¸Ñанием Ñлева напÑаво. ÐаÑало наÑего блока (block-start) - веÑÑ Ð½ÑÑ ÑÑÑоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ð³Ñид-конÑейнеÑа, ÐºÐ¾Ð½ÐµÑ Ð±Ð»Ð¾ÐºÐ° (block-end) - поÑледнÑÑ ÑÑÑоÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ ÐºÐ¾Ð½ÑейнеÑа. ÐаÑало ÑÑÑоки (inline-start) - ÑÐ°Ð¼Ð°Ñ Ð»ÐµÐ²Ð°Ñ ÐºÐ¾Ð»Ð¾Ð½Ð¾ÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ, поÑколÑÐºÑ Ð½Ð°Ñало ÑÑÑоки - ÑÑо вÑегда ÑоÑка, Ñ ÐºÐ¾ÑоÑой наÑинаеÑÑÑ Ð½Ð°Ð¿Ð¸Ñание ÑекÑÑа в заданном Ñежиме напиÑаниÑ. ÐÐ¾Ð½ÐµÑ ÑÑÑоки (inline-end) - поÑледнÑÑ ÐºÐ¾Ð»Ð¾Ð½Ð¾ÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ð³Ñида.
Ðогда Ð¼Ñ Ð·Ð°Ð´Ð°Ñм наÑÑ Ð³Ñид-облаÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑвойÑÑва grid-area , Ð¼Ñ ÑнаÑала опÑеделÑем обе наÑалÑнÑе линии block-start и inline-start, а заÑем обе конеÑнÑе линии block-end и inline-end. ÐоÑколÑÐºÑ Ð¼Ñ Ð´Ð°Ð²Ð½Ð¾ ÑабоÑаем Ñ ÑизиÑеÑкими ÑвойÑÑвами top, right, bottom и left, понаÑÐ°Ð»Ñ ÑÑо кажеÑÑÑ Ð½ÐµÐ¿ÑивÑÑнÑм, но вполне оÑмÑÑленно, еÑли оÑознаÑÑ, ÑÑо оÑноÑиÑелÑно Ñежима напиÑÐ°Ð½Ð¸Ñ Ð²ÐµÐ±-ÑайÑÑ - многонапÑавленнÑе ÑÑÑÑкÑÑÑÑ.
СÑиÑÐ°Ñ Ñ ÐºÐ¾Ð½Ñа
ÐÑ Ñакже можем оÑÑÑиÑÑваÑÑ Ð³Ñид-линии Ñ ÐºÐ¾Ð½Ñа, Ñо еÑÑÑ Ñ Ð¿Ð¾Ñледней (Ð´Ð»Ñ ÑÑÑÑкого ÑзÑка - Ñамой пÑавой) колоноÑной и поÑледней (Ñамой нижней) ÑÑÑоÑной линий. ÐÐ½Ð´ÐµÐºÑ ÑÑиÑ
линий бÑÐ´ÐµÑ -1, а линий непоÑÑедÑÑвенно пеÑед ними -2, и Ñак далее. ÐÑжно помниÑÑ, ÑÑо под поÑледней линией понимаеÑÑÑ Ð¿Ð¾ÑледнÑÑ Ð»Ð¸Ð½Ð¸Ñ Ñвного гÑида (explicit grid), Ñо еÑÑÑ Ð³Ñида, опÑеделÑнного Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ grid-template-columns и grid-template-rows. ÐÑбÑе линии ÑÑÑок и колонок, добавленнÑе неÑвнÑм гÑидом (implicit grid) не ÑÑиÑаÑÑÑÑ.
РпÑимеÑе ниже Ð¼Ñ "пеÑевеÑнÑли" опÑеделение наÑего гÑида, пÑи ÑазмеÑении ÑлеменÑов Ð·Ð°Ð´Ð°Ð²Ð°Ñ Ð»Ð¸Ð½Ð¸Ð¸ Ñ ÐºÐ¾Ð½Ñа, Ñо еÑÑÑ, Ð¾Ñ Ð¿Ñавого и нижнего кÑаÑв.
<div class="wrapper">
<div class="box1">One</div>
<div class="box2">Two</div>
<div class="box3">Three</div>
<div class="box4">Four</div>
</div>
.box1 {
grid-column-start: -1;
grid-column-end: -2;
grid-row-start: -1;
grid-row-end: -4;
}
.box2 {
grid-column-start: -3;
grid-column-end: -4;
grid-row-start: -1;
grid-row-end: -3;
}
.box3 {
grid-column-start: -2;
grid-column-end: -3;
grid-row-start: -1;
grid-row-end: -2;
}
.box4 {
grid-column-start: -2;
grid-column-end: -4;
grid-row-start: -3;
grid-row-end: -4;
}
Ðак ÑаÑÑÑнÑÑÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð½Ð° Ð´Ð»Ð¸Ð½Ñ Ð²Ñего гÑида?
ÐозможноÑÑÑ Ð°Ð´ÑеÑоваÑÑ Ð¸ пеÑвÑÑ, и поÑледнÑÑ Ð»Ð¸Ð½Ð¸Ð¸ гÑида ÑÑановиÑÑÑ ÐºÑайне полезной, еÑли нам нÑжно ÑаÑÑÑнÑÑÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð½Ð° вÑÑ Ð´Ð»Ð¸Ð½Ñ Ð³Ñида. СделаÑÑ ÑÑо можно Ð²Ð¾Ñ Ñак:
.item {
grid-column: 1 / -1;
}
ÐазоÑÑ (Gutters) или аллеи (Alleys)
СпеÑиÑикаÑÐ¸Ñ CSS Grid вклÑÑÐ°ÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÑÑÑ Ð¿ÑомежÑÑки (зазоÑÑ) Ð¼ÐµÐ¶Ð´Ñ ÑÑеками-колонками и ÑÑеками-ÑÑÑоками Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑвойÑÑв grid-column-gap и grid-row-gap. ÐÑи ÑвойÑÑва задаÑÑ Ð¿ÑомежÑÑки, коÑоÑÑе во многом дейÑÑвÑÑÑ ÑоÑно Ñак же, как ÑвойÑÑво column-gap в многоколоноÑнÑÑ
макеÑаÑ
.
ÐазоÑÑ Ð¿Ð¾ÑвлÑÑÑÑÑ ÑолÑко Ð¼ÐµÐ¶Ð´Ñ ÑÑеками и не добавлÑÑÑ Ð¿ÑоÑÑÑанÑÑво ÑвеÑÑ Ñ, ÑнизÑ, ÑпÑава или Ñлева гÑид-конÑейнеÑÑ. ÐÑ Ð¼Ð¾Ð¶ÐµÐ¼ добавиÑÑ Ð·Ð°Ð·Ð¾ÑÑ Ð² пÑедÑдÑÑий пÑимеÑ, допиÑав ÑÑи ÑвойÑÑва гÑид-конÑейнеÑÑ.
<div class="wrapper">
<div class="box1">One</div>
<div class="box2">Two</div>
<div class="box3">Three</div>
<div class="box4">Four</div>
</div>
.box1 {
grid-column: 1;
grid-row: 1 / 4;
}
.box2 {
grid-column: 3;
grid-row: 1 / 3;
}
.box3 {
grid-column: 2;
grid-row: 1;
}
.box4 {
grid-column: 2 / 4;
grid-row: 3;
}
.wrapper {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(3, 100px);
grid-column-gap: 20px;
grid-row-gap: 1em;
}
СокÑаÑÑÐ½Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑ Ð´Ð»Ñ Ð³Ñид-зазоÑов
Ðба ÑвойÑÑва Ñакже можно запиÑаÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑвойÑÑва-ÑокÑаÑÐµÐ½Ð¸Ñ grid-gap. ÐÑли задаÑÑ ÑолÑко одно знаÑение, Ñо оно опÑÐµÐ´ÐµÐ»Ð¸Ñ ÑÐ°Ð·Ð¼ÐµÑ Ð·Ð°Ð·Ð¾Ñов и Ð¼ÐµÐ¶Ð´Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ°Ð¼Ð¸, и Ð¼ÐµÐ¶Ð´Ñ ÑÑÑоками. ÐÑли Ð¼Ñ Ð·Ð°Ð´Ð°Ñм два знаÑениÑ, Ñо пеÑвое иÑполÑзÑеÑÑÑ Ð´Ð»Ñ grid-row-gap , а вÑоÑое - Ð´Ð»Ñ grid-column-gap.
.wrapper {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(3, 100px);
grid-gap: 1em 20px;
}
Ð ÑеÑÐ¼Ð¸Ð½Ð°Ñ ÑаÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ÑлеменÑов по гÑид-линиÑм (line-based positioning) зазоÑÑ Ð²ÐµÐ´ÑÑ ÑÐµÐ±Ñ Ñак, как еÑли Ð±Ñ Ñамой линии бÑла добавлена ÑолÑина. ÐÑе, ÑÑо должно бÑло наÑинаÑÑÑÑ Ð¾Ñ Ð»Ð¸Ð½Ð¸Ð¸, наÑинаеÑÑÑ Ð¾Ñ Ð½ÐµÑ Ð½Ð° ÑаÑÑÑоÑнии зазоÑа, и Ð²Ñ Ð½Ðµ можеÑе адÑеÑоваÑÑ Ð·Ð°Ð·Ð¾Ñ Ð½Ð°Ð¿ÑÑмÑÑ Ð¸Ð»Ð¸ помеÑÑиÑÑ Ð² него ÑÑо-нибÑдÑ. ÐÑли вам нÑÐ¶Ð½Ñ Ð·Ð°Ð·Ð¾ÑÑ, коÑоÑÑе ведÑÑ ÑебÑ, как обÑкновеннÑе ÑÑеки, ÑÑо же - опÑеделиÑе ÑÑек, а не зазоÑ.
ÐÑполÑзование клÑÑевого Ñлова span
Рдополнение к возможноÑÑи обÑаÑаÑÑÑÑ Ðº наÑалÑной и конеÑной линии по Ð¸Ñ Ð½Ð¾Ð¼ÐµÑам Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе задаÑÑ Ð½Ð¾Ð¼ÐµÑ Ð½Ð°ÑалÑной линии, а поÑле - колиÑеÑÑво ÑÑеков, коÑоÑÑе должен занÑÑÑ ÑлеменÑ.
<div class="wrapper">
<div class="box1">One</div>
<div class="box2">Two</div>
<div class="box3">Three</div>
<div class="box4">Four</div>
</div>
.box1 {
grid-column: 1;
grid-row: 1 / span 3;
}
.box2 {
grid-column: 3;
grid-row: 1 / span 2;
}
.box3 {
grid-column: 2;
grid-row: 1;
}
.box4 {
grid-column: 2 / span 2;
grid-row: 3;
}
ÐлÑÑевое Ñлово span Ñакже можно иÑполÑзоваÑÑ Ð² каÑеÑÑве знаÑÐµÐ½Ð¸Ñ grid-row-start/grid-row-end и grid-column-start/grid-column-end. Ðва пÑимеÑа ниже ÑоздаÑÑ Ð¾Ð´Ð½Ñ Ð¸ ÑÑ Ð¶Ðµ гÑид-облаÑÑÑ. РпеÑвом пÑимеÑе Ð¼Ñ Ð·Ð°Ð´Ð°Ñм наÑалÑнÑÑ ÑÑÑоÑнÑÑ Ð»Ð¸Ð½Ð¸Ñ, а поÑле говоÑим ÑвойÑÑвÑ, оÑвеÑаÑÑÐµÐ¼Ñ Ð·Ð° конеÑнÑÑ Ð»Ð¸Ð½Ð¸Ñ: Ñй, Ð¼Ñ Ñ
оÑим занÑÑÑ Ð¿Ð¾Ð´ ÑÑÐ¾Ñ ÑÐ»ÐµÐ¼ÐµÐ½Ñ ÑÑи линии. РиÑоге, гÑид-облаÑÑÑ Ð½Ð°ÑинаеÑÑÑ Ñ Ð¿ÐµÑвой линии и Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð¿ÑоÑÑÑанÑÑво до 4-ой.
.box1 {
grid-column-start: 1;
grid-row-start: 1;
grid-row-end: span 3;
}
Ðо вÑоÑом пÑимеÑе поÑÑÑпим наобоÑоÑ: зададим конеÑнÑÑ ÑÑÑоÑнÑÑ Ð»Ð¸Ð½Ð¸Ñ, а в знаÑении ÑвойÑÑва, оÑвеÑаÑÑего за наÑалÑнÑÑ Ð»Ð¸Ð½Ð¸Ñ, напиÑем span 3. ÐÑо знаÑиÑ, ÑÑо ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ занÑÑÑ ÑÑи ÑÑека до заданной конеÑной линии. ÐÑид-облаÑÑÑ Ð½Ð°ÑинаеÑÑÑ Ñ Ð»Ð¸Ð½Ð¸Ð¸ 4 и Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ ÑÑи ÑÑека до линии 1.
.box1 {
grid-column-start: 1;
grid-row-start: span 3;
grid-row-end: 4;
}
ЧÑÐ¾Ð±Ñ Ð»ÑÑÑе оÑвоиÑÑÑÑ Ñ ÑазмеÑением ÑлеменÑов по гÑид-линиÑм, попÑобÑйÑе ÑобÑаÑÑ Ð½ÐµÑколÑко ÑаÑпÑоÑÑÑанÑннÑÑ Ð¼Ð°ÐºÐµÑов, ÑаÑÐ¿Ð¾Ð»Ð°Ð³Ð°Ñ ÑлеменÑÑ Ð½Ð° гÑÐ¸Ð´Ð°Ñ Ñ ÑазлиÑнÑм колиÑеÑÑвом колонок. ÐомниÑе, ÑÑо еÑли Ð²Ñ Ð½Ðµ ÑазмеÑаеÑе вÑе ваÑи ÑлеменÑÑ, оÑÑавÑиеÑÑ ÑаÑполагаÑÑÑÑ Ð² ÑооÑвеÑÑÑвии Ñ Ð¿Ñавилами авÑоÑазмеÑениÑ. Ð ÑезÑлÑÑаÑе Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð»ÑÑиÑÑÑÑ ÐºÐ°Ðº Ñаз ÑÐ¾Ñ Ð¼Ð°ÐºÐµÑ, коÑоÑÑй вам нÑжен, но не ÑакÑ, и еÑли ÑÑо-Ñо поÑло не Ñак, пÑовеÑÑÑе, опÑеделили ли Ð²Ñ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð´Ð»Ñ Ð¿Ñоблемного ÑлеменÑа.
Также помниÑе, ÑÑо ÑлеменÑÑ Ð½Ð° гÑиде могÑÑ Ð¿ÐµÑекÑÑваÑÑ Ð´ÑÑг дÑÑга, еÑли Ð²Ñ Ð½Ð°Ð¼ÐµÑенно ÑазмеÑÑили Ð¸Ñ Ñак, ÑÑÐ¾Ð±Ñ Ð¾Ð½Ð¸ дÑÑг дÑÑга пеÑекÑÑвали. Ðодобное поведение позволÑÐµÑ Ð¿Ð¾Ð»ÑÑиÑÑ Ð¸Ð½ÑеÑеÑнÑе ÑÑÑекÑÑ, но, еÑли Ð²Ñ Ð½ÐµÐºÐ¾ÑÑекÑно задали наÑалÑнÑе и конеÑнÑе линии, ÑезÑлÑÑÐ°Ñ Ð¼Ð¾Ð¶ÐµÑ Ð½ÐµÐ¿ÑиÑÑно Ð²Ð°Ñ ÑдивиÑÑ. Firefox Grid Highlighter бÑÐ´ÐµÑ ÐºÑайне полезен в пÑоÑеÑÑе обÑÑениÑ, оÑобенно, когда Ð²Ñ ÑÑÑоиÑе ÑложнÑе гÑидÑ.