ÐÑÑавнивание блоков в CSS ÑазмеÑке Grid
ÐÑли Ð²Ñ Ð·Ð½Ð°ÐºÐ¾Ð¼Ñ Ñ flexbox, Ð²Ñ Ñже ÑÑолкнÑлиÑÑ Ñ Ñем, как гибкие ÑлеменÑÑ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð¿ÑавилÑно вÑÑÐ¾Ð²Ð½ÐµÐ½Ñ Ð²Ð½ÑÑÑи конÑейнеÑа flex. ÐÑи ÑвойÑÑва вÑÑавниваниÑ, коÑоÑÑе Ð¼Ñ Ð²Ð¿ÐµÑвÑе вÑÑÑеÑили в ÑпеÑиÑикаÑии flexbox, бÑли пеÑенеÑÐµÐ½Ñ Ð² новÑÑ ÑпеÑиÑикаÑÐ¸Ñ Ð¿Ð¾Ð´ названием Box Alignment Level 3. ÐÑа ÑпеÑиÑикаÑÐ¸Ñ ÑодеÑÐ¶Ð¸Ñ Ð¿Ð¾Ð´ÑобнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ Ñом, как вÑÑавнивание должно ÑабоÑаÑÑ Ð²Ð¾ вÑÐµÑ ÑазлиÑнÑÑ Ð¼ÐµÑÐ¾Ð´Ð°Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸.
ÐаждÑй меÑод макеÑа, коÑоÑÑй ÑеализÑÐµÑ Ð²ÑÑавнивание ÑÑиков, бÑÐ´ÐµÑ Ð¸Ð¼ÐµÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе оÑлиÑÐ¸Ñ Ð¸Ð·-за Ñого, ÑÑо каждÑй меÑод Ð¸Ð¼ÐµÐµÑ ÑазнÑе ÑÑнкÑии и огÑаниÑÐµÐ½Ð¸Ñ (и ÑнаÑледованное поведение), ÑÑо Ð´ÐµÐ»Ð°ÐµÑ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñм вÑÑавнивание ÑоÑно Ñаким же обÑазом по вÑем напÑавлениÑм. СпеÑиÑикаÑÐ¸Ñ Box Alignment ÑодеÑÐ¶Ð¸Ñ Ð¿Ð¾Ð´ÑобнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ меÑода, однако Ð²Ñ Ð±Ñли Ð±Ñ ÑазоÑаÑованÑ, еÑли Ð±Ñ Ð¿Ð¾Ð¿ÑÑалиÑÑ Ð²ÑполниÑÑ Ð²ÑÑавнивание по многим меÑодам пÑÑмо ÑейÑаÑ, поÑколÑÐºÑ Ð¿Ð¾Ð´Ð´ÐµÑжка бÑаÑзеÑа еÑÑ Ð½Ðµ ÑÑÑеÑÑвÑеÑ. Там, где Ñ Ð½Ð°Ñ ÐµÑÑÑ Ð¿Ð¾Ð´Ð´ÐµÑжка бÑаÑзеÑа Ð´Ð»Ñ ÑвойÑÑв вÑÑÐ°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¸ ÑаÑпÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿ÑоÑÑÑанÑÑва из ÑпеÑиÑикаÑии Box Alignment, в grid макеÑа.
Ð ÑÑом ÑÑководÑÑве пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð´ÐµÐ¼Ð¾Ð½ÑÑÑаÑии Ñого, как ÑабоÑÐ°ÐµÑ Ð²ÑÑавнивание ÑÑеек в макеÑе. ÐÑ ÑвидиÑе много обÑего в Ñом, как ÑÑи ÑвойÑÑва и ÑенноÑÑи ÑабоÑаÑÑ Ð² flexbox. Ðз-за Ñого, ÑÑо ÑеÑка двÑмеÑна и однобоÑеÑна, ÑÑÑеÑÑвÑÐµÑ Ð½ÐµÑколÑко неболÑÑÐ¸Ñ ÑазлиÑий, за коÑоÑÑми Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑледиÑÑ. ÐоÑÑÐ¾Ð¼Ñ Ð¼Ñ Ð½Ð°ÑнÑм Ñ ÑаÑÑмоÑÑÐµÐ½Ð¸Ñ Ð´Ð²ÑÑ Ð¾Ñей, Ñ ÐºÐ¾ÑоÑÑми Ð¼Ñ ÑÑалкиваемÑÑ Ð¿Ñи вÑÑавнивании обÑекÑов в ÑеÑке.
Ðве оÑи grid layout
ÐÑи ÑабоÑе Ñ ÑаÑкладкой ÑеÑки Ñ Ð²Ð°Ñ ÐµÑÑÑ Ð´Ð²Ðµ оÑи Ð´Ð»Ñ Ð²ÑÑÐ°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¾Ð±ÑекÑов - оÑи блока или ÑÑолбÑа, оÑи inline или ÑÑÑоки. ÐÑÑ Ð±Ð»Ð¾ÐºÐ° - ÑÑо оÑÑ, на коÑоÑой блоки вÑÐ»Ð¾Ð¶ÐµÐ½Ñ Ð² макеÑе блока. ÐÑли Ñ Ð²Ð°Ñ ÐµÑÑÑ Ð´Ð²Ð° абзаÑа на ваÑей ÑÑÑаниÑе, они оÑобÑажаÑÑÑÑ Ð¾Ð´Ð¸Ð½ под дÑÑгим, поÑÑÐ¾Ð¼Ñ Ð² ÑÑом напÑавлении Ð¼Ñ Ð¾Ð¿Ð¸ÑÑваем оÑÑ Ð±Ð»Ð¾ÐºÐ°. Ð ÑпеÑиÑикаÑии CSS Grid Layout она назÑваеÑÑÑ Ð¾ÑÑÑ ÑÑолбÑа, Ñак как ÑÑо оÑÑ, по коÑоÑой вÑполнÑÑÑÑÑ Ð½Ð°Ñи доÑожки ÑÑолбÑов.

ÐнÑÑÑеннÑÑ Ð¾ÑÑ (inline axis) пÑÐ¾Ñ Ð¾Ð´Ð¸Ñ Ð¿Ð¾ оÑи блока, ÑÑо напÑавление, в коÑоÑом вÑполнÑеÑÑÑ ÑегÑлÑÑнÑй поÑок ÑÑÑок. Ð ÑпеÑиÑикаÑии CSS Grid Layout его иногда назÑваÑÑ Ð¾ÑÑÑ ÑÑÑоки, ÑвлÑÑÑейÑÑ Ð¾ÑÑÑ, по коÑоÑой идÑÑ Ð½Ð°Ñи доÑожки.

ÐÑ Ð¼Ð¾Ð¶ÐµÐ¼ вÑÑовнÑÑÑ ÑодеÑжимое внÑÑÑи облаÑÑей ÑеÑки и ÑеÑка оÑÑÐ»ÐµÐ¶Ð¸Ð²Ð°ÐµÑ ÑÐµÐ±Ñ Ð½Ð° ÑÑÐ¸Ñ Ð´Ð²ÑÑ Ð¾ÑÑÑ .
ÐÑÑавнивание ÑлеменÑов на блоке или ÑÑолбÑе по оÑи
ÐлеменÑÑ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ align-self и align-items на оÑи блока. Ðогда Ð¼Ñ Ð¸ÑполÑзÑем ÑÑи ÑвойÑÑва, Ð¼Ñ Ð¼ÐµÐ½Ñем вÑÑавнивание ÑлеменÑа в облаÑÑи ÑеÑки, коÑоÑÑÑ Ð²Ñ Ð¿Ð¾Ð¼ÐµÑÑили.
Ð ÑледÑÑÑем пÑимеÑе Ñ Ð¼ÐµÐ½Ñ ÐµÑÑÑ ÑеÑÑÑе облаÑÑи ÑеÑки внÑÑÑи моей ÑеÑки. Я Ð¼Ð¾Ð³Ñ Ð¸ÑполÑзоваÑÑ ÑвойÑÑво align-items в конÑейнеÑе ÑеÑки, ÑÑÐ¾Ð±Ñ Ð²ÑÑовнÑÑÑ ÑлеменÑÑ, иÑполÑзÑÑ Ð¾Ð´Ð½Ð¾ из ÑледÑÑÑиÑ
знаÑений:
autonormalstartendcenterstretchbaselinefirst baselinelast baseline
.wrapper {
display: grid;
grid-template-columns: repeat(8, 1fr);
grid-gap: 10px;
grid-auto-rows: 100px;
grid-template-areas:
"a a a a b b b b"
"a a a a b b b b"
"c c c c d d d d"
"c c c c d d d d";
align-items: start;
}
.item1 {
grid-area: a;
}
.item2 {
grid-area: b;
}
.item3 {
grid-area: c;
}
.item4 {
grid-area: d;
}
<div class="wrapper">
<div class="item1">Item 1</div>
<div class="item2">Item 2</div>
<div class="item3">Item 3</div>
<div class="item4">Item 4</div>
</div>
ÐмейÑе в видÑ, ÑÑо поÑле ÑÑÑановки align-self: start вÑÑоÑа каждого доÑеÑнего <div> бÑÐ´ÐµÑ Ð¾Ð¿ÑеделÑÑÑÑÑ ÑодеÑжимÑм <div>. ÐÑо пÑоÑивоÑеÑÐ¸Ñ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð¾ÑÑÑÑÑÑÐ²Ð¸Ñ Ð²ÑÑÐ°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¸ в ÑÑом ÑлÑÑае вÑÑоÑа каждого <div> ÑаÑÑÑгиваеÑÑÑ, ÑÑÐ¾Ð±Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸ÑÑ ÐµÐ³Ð¾ облаÑÑÑ ÑеÑки.
СвойÑÑво align-items ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÑвойÑÑво align-self Ð´Ð»Ñ Ð²ÑеÑ
доÑеÑниÑ
ÑлеменÑов ÑеÑки. ÐÑо ознаÑаеÑ, ÑÑо Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑÑÑановиÑÑ ÑвойÑÑво индивидÑалÑно, иÑполÑзÑÑ align-self по ÑлеменÑÑ ÑеÑки.
Ð ÑледÑÑÑем пÑимеÑе Ñ Ð¸ÑполÑзÑÑ ÑвойÑÑво align-self, ÑÑÐ¾Ð±Ñ Ð¿ÑодемонÑÑÑиÑоваÑÑ ÑазлиÑнÑе знаÑÐµÐ½Ð¸Ñ Ð²ÑÑавниваниÑ. РпеÑвой облаÑÑи оÑобÑажаеÑÑÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð²ÑÑавниваниÑ, коÑоÑое должно ÑаÑÑÑгиваÑÑÑÑ. ÐÑоÑой ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение ÑамоогÑаниÑÐµÐ½Ð¸Ñ start, ÑÑеÑий end и ÑеÑвÑÑÑÑй center.
.wrapper {
display: grid;
grid-template-columns: repeat(8, 1fr);
grid-gap: 10px;
grid-auto-rows: 100px;
grid-template-areas:
"a a a a b b b b"
"a a a a b b b b"
"c c c c d d d d"
"c c c c d d d d";
}
.item1 {
grid-area: a;
}
.item2 {
grid-area: b;
align-self: start;
}
.item3 {
grid-area: c;
align-self: end;
}
.item4 {
grid-area: d;
align-self: center;
}
<div class="wrapper">
<div class="item1">Item 1</div>
<div class="item2">Item 2</div>
<div class="item3">Item 3</div>
<div class="item4">Item 4</div>
</div>
ÐлеменÑÑ Ñ Ð²Ð½ÑÑÑенним ÑооÑноÑением ÑÑоÑон
СпеÑиÑикаÑÐ¸Ñ ÑказÑваеÑ, ÑÑо поведение по ÑмолÑÐ°Ð½Ð¸Ñ Ð² align-self должно ÑаÑÑÑгиваÑÑÑÑ, за иÑклÑÑением ÑлеменÑов, коÑоÑÑе имеÑÑ Ð²Ð½ÑÑÑеннее ÑооÑноÑение ÑÑоÑон, в ÑÑом ÑлÑÑае они ведÑÑ ÑÐµÐ±Ñ ÐºÐ°Ðº start. ÐÑиÑиной ÑÑого ÑвлÑеÑÑÑ Ñо, ÑÑо еÑли ÑлеменÑÑ Ñ ÑооÑноÑением ÑÑоÑон наÑÑÑÐ¾ÐµÐ½Ñ Ð½Ð° ÑаÑÑÑжение, ÑÑо знаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ð±ÑÐ´ÐµÑ Ð¸ÑкажаÑÑ Ð¸Ñ
.
ÐÑо поведение бÑло ÑÑоÑнено в ÑпеÑиÑикаÑии, пÑи ÑÑом бÑаÑзеÑÑ ÐµÑÑ Ð½Ðµ Ñеализовали пÑавилÑное поведение. Ðока ÑÑо не пÑоизойдÑÑ, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑбедиÑÑÑÑ, ÑÑо ÑлеменÑÑ Ð½Ðµ ÑаÑÑÑгиваÑÑÑÑ, напÑÐ¸Ð¼ÐµÑ Ð¸Ð·Ð¾Ð±ÑажениÑ, коÑоÑÑе ÑвлÑÑÑÑÑ Ð¿ÑÑмÑми доÑеÑними ÑлеменÑами ÑеÑки, пÑÑÑм ÑÑÑановки align-self и justify-self start. ÐÑо бÑÐ´ÐµÑ Ð¸Ð¼Ð¸ÑиÑоваÑÑ Ð¿ÑавилÑное поведение поÑле его ÑеализаÑии.
Justifying Items on the Inline or Row Axis
ÐоÑколÑÐºÑ align-items и align-self обÑабаÑÑваÑÑ Ð²ÑÑавнивание ÑлеменÑов на оÑи блока, justify-items и justify-self вÑполниÑÑ ÑÑ Ð¶Ðµ ÑабоÑÑ Ð½Ð° оÑи inline или row. ÐнаÑениÑ, коÑоÑÑе Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе вÑбÑаÑÑ, Ñакие же, как Ð´Ð»Ñ align-self.
autonormalstartendcenterstretchbaselinefirst baselinelast baseline
ÐÑ Ð¼Ð¾Ð¶ÐµÑе ÑвидеÑÑ ÑÐ¾Ñ Ð¶Ðµ пÑимеÑ, ÑÑо и Ð´Ð»Ñ align-items ниже. Ðа ÑÑÐ¾Ñ Ñаз Ð¼Ñ Ð¿ÑименÑем ÑвойÑÑво justify-self.
ÐпÑÑÑ Ð¶Ðµ, знаÑение по ÑмолÑÐ°Ð½Ð¸Ñ stretch, за иÑклÑÑением ÑлеменÑов Ñ Ð²Ð½ÑÑÑенним ÑооÑноÑением ÑÑоÑон. ÐÑо ознаÑаеÑ, ÑÑо по ÑмолÑÐ°Ð½Ð¸Ñ ÑлеменÑÑ ÑеÑки бÑдÑÑ Ð¿Ð¾ÐºÑÑваÑÑ Ð¸Ñ
плоÑÐ°Ð´Ñ ÑеÑки, еÑли Ð²Ñ Ð½Ðµ измениÑе еÑ, ÑÑÑановив вÑÑавнивание. ÐеÑвÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² пÑимеÑе демонÑÑÑиÑÑÐµÑ ÑÑо вÑÑавнивание по ÑмолÑаниÑ:
.wrapper {
display: grid;
grid-template-columns: repeat(8, 1fr);
grid-gap: 10px;
grid-auto-rows: 100px;
grid-template-areas:
"a a a a b b b b"
"a a a a b b b b"
"c c c c d d d d"
"c c c c d d d d";
}
.item1 {
grid-area: a;
}
.item2 {
grid-area: b;
justify-self: start;
}
.item3 {
grid-area: c;
justify-self: end;
}
.item4 {
grid-area: d;
justify-self: center;
}
<div class="wrapper">
<div class="item1">Item 1</div>
<div class="item2">Item 2</div>
<div class="item3">Item 3</div>
<div class="item4">Item 4</div>
</div>
Ðак и align-self и align-items, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе пÑимениÑÑ justify-items к конÑейнеÑÑ ÑеÑки, ÑÑÐ¾Ð±Ñ ÑÑÑановиÑÑ Ð·Ð½Ð°Ñение justify-self Ð´Ð»Ñ Ð²ÑеÑ
ÑлеменÑов.
СвойÑÑва justify-self и justify-items не ÑÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ñ Ð² flexbox. ÐÑо ÑвÑзано Ñ Ð¾Ð´Ð½Ð¾Ð¼ÐµÑнÑм Ñ
аÑакÑеÑом flexbox и Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÑколÑко ÑлеменÑов Ð²Ð´Ð¾Ð»Ñ Ð¾Ñи, ÑÑо Ð´ÐµÐ»Ð°ÐµÑ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñм опÑавдание одного ÑлеменÑа. ЧÑÐ¾Ð±Ñ Ð²ÑÑовнÑÑÑ ÑлеменÑÑ Ð²Ð´Ð¾Ð»Ñ Ð¾Ñновной, вÑÑÑоенной оÑи в flexbox, Ð²Ñ Ð¸ÑполÑзÑеÑе ÑвойÑÑво justify-content.
Center an item in the area
ÐбÑединив ÑвойÑÑва align и justify, Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ легко ÑенÑÑиÑоваÑÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð²Ð½ÑÑÑи облаÑÑи ÑеÑки.
.wrapper {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-gap: 10px;
grid-auto-rows: 200px;
grid-template-areas:
". a a ."
". a a .";
}
.item1 {
grid-area: a;
align-self: center;
justify-self: center;
}
<div class="wrapper">
<div class="item1">Item 1</div>
</div>
Aligning the grid tracks on the block, or column, axis
ÐÑли Ñ Ð²Ð°Ñ ÐµÑÑÑ ÑиÑÑаÑиÑ, когда ваÑи доÑожки ÑеÑки иÑполÑзÑÑÑ Ð¾Ð±Ð»Ð°ÑÑÑ, коÑоÑÐ°Ñ Ð¼ÐµÐ½ÑÑе, Ñем конÑÐµÐ¹Ð½ÐµÑ ÑеÑки, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе вÑÑовнÑÑÑ ÑÑаÑÑÑ ÑеÑки ÑамоÑÑоÑÑелÑно внÑÑÑи конÑейнеÑа. Ð Ñнова ÑÑо ÑабоÑÐ°ÐµÑ Ð½Ð° блоÑной и вÑÑÑоенной оÑÑÑ
Ñ align-content вÑÑавниванием доÑожек на оÑи блока и justify-content, вÑполнÑÑÑим вÑÑавнивание по вÑÑÑоенной оÑи. ÐнаÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ align-content и justify-content:
normalstartendcenterstretchspace-aroundspace-betweenspace-evenlybaselinefirst baselinelast baseline
РпÑиведÑнном ниже пÑимеÑе Ñ Ð¼ÐµÐ½Ñ ÐµÑÑÑ ÐºÐ¾Ð½ÑÐµÐ¹Ð½ÐµÑ ÑеÑки ÑазмеÑом 500 пикÑелей на 500 пикÑелей. Я опÑеделил 3 ÑÑÑоки и ÑÑолбÑÑ, каждÑй из 100 пикÑелей Ñ 10-пикÑелÑнÑм жÑлобом. ÐÑо ознаÑаеÑ, ÑÑо внÑÑÑи конÑейнеÑа ÑеÑки еÑÑÑ Ð¿ÑоÑÑÑанÑÑво как в блоÑном, Ñак и в линейном напÑавлениÑÑ .
СвойÑÑво align-content пÑименÑеÑÑÑ Ðº конÑейнеÑÑ ÑеÑки, поÑколÑÐºÑ Ð¾Ð½Ð¾ ÑабоÑÐ°ÐµÑ Ð½Ð° вÑей ÑеÑке. Ðоведение по ÑмолÑÐ°Ð½Ð¸Ñ Ð² макеÑе ÑеÑки start, поÑÑÐ¾Ð¼Ñ Ð½Ð°Ñи доÑожки ÑеÑки наÑ
одÑÑÑÑ Ð² веÑÑ
нем левом ÑÐ³Ð»Ñ ÑеÑки, вÑÑÐ¾Ð²Ð½ÐµÐ½Ñ Ð¿Ð¾ оÑноÑÐµÐ½Ð¸Ñ Ðº ÑÑаÑÑовÑм линиÑм ÑеÑки:
.wrapper {
display: grid;
grid-template-columns: repeat(3, 100px);
grid-template-rows: repeat(3, 100px);
height: 500px;
width: 500px;
grid-gap: 10px;
grid-template-areas:
"a a b"
"a a b"
"c d d";
}
.item1 {
grid-area: a;
}
.item2 {
grid-area: b;
}
.item3 {
grid-area: c;
}
.item4 {
grid-area: d;
}
<div class="wrapper">
<div class="item1">Item 1</div>
<div class="item2">Item 2</div>
<div class="item3">Item 3</div>
<div class="item4">Item 4</div>
</div>
ÐÑли Ñ Ð´Ð¾Ð±Ð°Ð²Ð»Ñ align-conten в мой конÑÐµÐ¹Ð½ÐµÑ Ñо знаÑением end, вÑе ÑÑеки пеÑейдÑÑ Ð² конеÑнÑÑ ÑÑÑÐ¾ÐºÑ ÐºÐ¾Ð½ÑейнеÑа ÑеÑки в ÑазмеÑноÑÑи блока:
.wrapper {
display: grid;
grid-template-columns: repeat(3, 100px);
grid-template-rows: repeat(3, 100px);
height: 500px;
width: 500px;
grid-gap: 10px;
grid-template-areas:
"a a b"
"a a b"
"c d d";
align-content: end;
}
.item1 {
grid-area: a;
}
.item2 {
grid-area: b;
}
.item3 {
grid-area: c;
}
.item4 {
grid-area: d;
}
<div class="wrapper">
<div class="item1">Item 1</div>
<div class="item2">Item 2</div>
<div class="item3">Item 3</div>
<div class="item4">Item 4</div>
</div>
ÐÑ Ñакже можем иÑполÑзоваÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑÑого ÑвойÑÑва, коÑоÑÑе могÑÑ Ð±ÑÑÑ Ð·Ð½Ð°ÐºÐ¾Ð¼Ñ Ñ flexbox; знаÑÐµÐ½Ð¸Ñ Ð¿ÑоÑÑÑанÑÑвенного ÑаÑпÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ space-between, space-around и space-evenly. ÐÑли Ð¼Ñ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ð¼ align-content до space-between, Ð²Ñ ÑвидиÑе как вÑглÑдÑÑ ÑлеменÑÑ Ð½Ð° наÑем пÑоÑÑÑанÑÑве grid:
.wrapper {
display: grid;
grid-template-columns: repeat(3, 100px);
grid-template-rows: repeat(3, 100px);
height: 500px;
width: 500px;
grid-gap: 10px;
grid-template-areas:
"a a b"
"a a b"
"c d d";
align-content: space-between;
}
.item1 {
grid-area: a;
}
.item2 {
grid-area: b;
}
.item3 {
grid-area: c;
}
.item4 {
grid-area: d;
}
<div class="wrapper">
<div class="item1">Item 1</div>
<div class="item2">Item 2</div>
<div class="item3">Item 3</div>
<div class="item4">Item 4</div>
</div>
СÑÐ¾Ð¸Ñ Ð¾ÑмеÑиÑÑ, ÑÑо иÑполÑзование ÑÑÐ¸Ñ Ð·Ð½Ð°Ñений пÑоÑÑÑанÑÑвенного ÑаÑпÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к ÑвелиÑÐµÐ½Ð¸Ñ ÑлеменÑов в ваÑей ÑеÑке. ÐÑли ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¾Ñ Ð²Ð°ÑÑÐ²Ð°ÐµÑ Ð±Ð¾Ð»ÐµÐµ одной доÑожки ÑеÑки, Ñак как дополниÑелÑное пÑоÑÑÑанÑÑво добавлÑеÑÑÑ Ð¼ÐµÐ¶Ð´Ñ Ð´Ð¾Ñожками, ÑÑÐ¾Ñ Ð¿ÑÐµÐ´Ð¼ÐµÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ ÑÑаÑÑ Ð±Ð¾Ð»ÑÑим, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð³Ð»Ð¾ÑиÑÑ Ð¿ÑоÑÑÑанÑÑво. ÐÑ Ð²Ñегда ÑабоÑаем в ÑÑÑогой ÑеÑке. ÐоÑÑомÑ, еÑли Ð²Ñ ÑеÑиÑе иÑполÑзоваÑÑ ÑÑи знаÑениÑ, ÑбедиÑеÑÑ, ÑÑо ÑодеÑжимое ваÑÐ¸Ñ ÑÑеков Ð¼Ð¾Ð¶ÐµÑ ÑпÑавиÑÑÑÑ Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑм пÑоÑÑÑанÑÑвом или ÑÑо Ð²Ñ Ð¸ÑполÑзовали ÑвойÑÑва вÑÑÐ°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ ÑлеменÑов, ÑÑÐ¾Ð±Ñ Ð·Ð°ÑÑавиÑÑ Ð¸Ñ Ð¿ÐµÑемеÑаÑÑÑÑ Ð² наÑало, а не ÑаÑÑÑгиваÑÑÑÑ.
РпÑиведÑнном ниже изобÑажении Ñ Ð¿Ð¾Ð¼ÐµÑÑил ÑеÑÐºÑ Ñ align-content, Ñо знаÑением start ÑÑдом Ñ ÑеÑкой, когда знаÑение align-content Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение space-between. ÐÑ Ð¼Ð¾Ð¶ÐµÑе видеÑÑ, как ÑлеменÑÑ 1 и 2, коÑоÑÑе оÑ
ваÑÑваÑÑ Ð´Ð²Ð° ÑÑда доÑожек, взÑÑÑ Ð½Ð° дополниÑелÑной вÑÑоÑе, поÑколÑÐºÑ Ð¾Ð½Ð¸ полÑÑаÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑное пÑоÑÑÑанÑÑво, добавленное к пÑомежÑÑÐºÑ Ð¼ÐµÐ¶Ð´Ñ ÑÑими двÑÐ¼Ñ Ð´Ð¾Ñожками:

Justifying the grid tracks on the row axis
Ðа оÑи inline Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ иÑполÑзоваÑÑ justify-content Ð´Ð»Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ñого же Ñипа вÑÑавниваниÑ, ÑÑо Ð¼Ñ Ð¸ÑполÑзовали align-content Ð´Ð»Ñ Ð¾Ñи блока.
ÐÑполÑзÑÑ ÑÐ¾Ñ Ð¶Ðµ пÑимеÑ, Ñ ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°Ñ justify-content space-around. ÐÑо Ñнова вÑзÑÐ²Ð°ÐµÑ Ð´Ð¾Ñожки, коÑоÑÑе оÑ
ваÑÑваÑÑ Ð±Ð¾Ð»ÐµÐµ одного ÑÑолбÑа, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑное пÑоÑÑÑанÑÑво:
.wrapper {
display: grid;
grid-template-columns: repeat(3, 100px);
grid-template-rows: repeat(3, 100px);
height: 500px;
width: 500px;
grid-gap: 10px;
grid-template-areas:
"a a b"
"a a b"
"c d d";
align-content: space-between;
justify-content: space-around;
}
.item1 {
grid-area: a;
}
.item2 {
grid-area: b;
}
.item3 {
grid-area: c;
}
.item4 {
grid-area: d;
}
<div class="wrapper">
<div class="item1">Item 1</div>
<div class="item2">Item 2</div>
<div class="item3">Item 3</div>
<div class="item4">Item 4</div>
</div>
Alignment and auto margins
ÐÑÑгой ÑпоÑоб вÑÑÐ°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ ÑлеменÑов внÑÑÑи иÑ
облаÑÑи - иÑполÑзоваÑÑ Ð°Ð²ÑомаÑиÑеÑкие полÑ. ÐÑли Ð²Ñ ÐºÐ¾Ð³Ð´Ð°-либо ÑенÑÑиÑовали Ð²Ð°Ñ Ð¼Ð°ÐºÐµÑ Ð² окне пÑоÑмоÑÑа, ÑÑÑановив пÑавое и левое поле блока конÑейнеÑа в auto, Ð²Ñ Ð·Ð½Ð°ÐµÑе, ÑÑо авÑомаÑиÑеÑÐºÐ°Ñ Ð¼Ð°Ñжа поглоÑÐ°ÐµÑ Ð²Ñе доÑÑÑпное пÑоÑÑÑанÑÑво. УÑÑановив маÑÐ¶Ñ Ð² auto Ñ Ð¾Ð±ÐµÐ¸Ñ
ÑÑоÑон, она вÑÐ´Ð²Ð¸Ð³Ð°ÐµÑ Ð±Ð»Ð¾Ðº в ÑеÑединÑ, Ñак как оба Ð¿Ð¾Ð»Ñ Ð¿ÑÑаÑÑÑÑ Ð²Ð·ÑÑÑ Ð²Ñе пÑоÑÑÑанÑÑво.
Ð ÑледÑÑÑем пÑимеÑе Ñ Ð´Ð°Ð» ÑлеменÑÑ 1 левое поле auto. ÐÑ Ð¼Ð¾Ð¶ÐµÑе ÑвидеÑÑ, как ÑодеÑжимое ÑепеÑÑ Ð¿ÐµÑемеÑÑиÑÑÑ Ð² пÑавÑÑ ÑаÑÑÑ Ð¾Ð±Ð»Ð°ÑÑи, поÑколÑÐºÑ Ð°Ð²ÑомаÑиÑеÑÐºÐ°Ñ Ð¼Ð°Ñжа Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð¾ÑÑавÑееÑÑ Ð¿ÑоÑÑÑанÑÑво поÑле Ñого, как бÑло назнаÑено меÑÑо Ð´Ð»Ñ ÑодеÑжимого ÑÑого ÑлеменÑа:
.wrapper {
display: grid;
grid-template-columns: repeat(3, 100px);
grid-template-rows: repeat(3, 100px);
height: 500px;
width: 500px;
grid-gap: 10px;
grid-template-areas:
"a a b"
"a a b"
"c d d";
}
.item1 {
grid-area: a;
margin-left: auto;
}
.item2 {
grid-area: b;
}
.item3 {
grid-area: c;
}
.item4 {
grid-area: d;
}
<div class="wrapper">
<div class="item1">Item 1</div>
<div class="item2">Item 2</div>
<div class="item3">Item 3</div>
<div class="item4">Item 4</div>
</div>
ÐÑ Ð¼Ð¾Ð¶ÐµÑе видеÑÑ, как ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð²ÑÑавниваеÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Firefox Grid Highlighter:

Alignment and Writing Modes
Ðо вÑÐµÑ ÑÑÐ¸Ñ Ð¿ÑимеÑÐ°Ñ Ñ ÑабоÑал на английÑком ÑзÑке, коÑоÑÑй ÑвлÑеÑÑÑ ÑзÑком Ñлева напÑаво. ÐÑо ознаÑаеÑ, ÑÑо наÑи ÑÑаÑÑовÑе линии Ð½Ð°Ñ Ð¾Ð´ÑÑÑÑ ÑвеÑÑ Ñ Ð¸ Ñлева Ð¾Ñ Ð½Ð°Ñей ÑеÑки, когда Ð¼Ñ Ð´Ñмаем в ÑизиÑеÑÐºÐ¸Ñ Ð½Ð°Ð¿ÑавлениÑÑ .
CSS Grid Layout и ÑпеÑиÑикаÑÐ¸Ñ Box Alignment пÑедназнаÑÐµÐ½Ñ Ð´Ð»Ñ ÑабоÑÑ Ñ Ñежимами запиÑи в CSS. ÐÑо ознаÑаеÑ, ÑÑо еÑли Ð²Ñ ÑабоÑаеÑе Ñ ÑзÑком ÑпÑава налево, напÑÐ¸Ð¼ÐµÑ Ð½Ð° аÑабÑком ÑзÑке, наÑало ÑеÑки бÑÐ´ÐµÑ Ð²ÐµÑÑ
ним и пÑавÑм, поÑÑÐ¾Ð¼Ñ Ð·Ð½Ð°Ñение по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ justify-content: start бÑÐ´ÐµÑ ÑоÑÑоÑÑÑ Ð² Ñом, ÑÑо ÑÑеки ÑеÑки наÑинаÑÑÑÑ Ñ Ð¿Ñавой ÑÑоÑÐ¾Ð½Ñ ÑеÑки.
Ðднако, еÑли Ð²Ñ ÑÑÑанавливаеÑе авÑомаÑиÑеÑкие полÑ, иÑполÑзÑÑ margin-right или margin-left, или абÑолÑÑно позиÑиониÑÑÑÑий ÑлеменÑ, иÑполÑзÑÑ top, right, bottom and left ÑмеÑениÑ, Ð²Ñ Ð½Ðµ бÑдеÑе ÑоблÑдаÑÑ ÑÐµÐ¶Ð¸Ð¼Ñ Ð·Ð°Ð¿Ð¸Ñи. Ð ÑледÑÑÑем ÑÑководÑÑве Ð¼Ñ ÑаÑÑмоÑÑим ÑÑо взаимодейÑÑвие Ð¼ÐµÐ¶Ð´Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¾Ð¹ ÑеÑки CSS, вÑÑавниванием ÑÑиков и Ñежимами запиÑи. ÐÑо бÑÐ´ÐµÑ Ð²Ð°Ð¶Ð½Ð¾ понимаÑÑ, еÑли Ð²Ñ ÑазÑабаÑÑваеÑе ÑайÑÑ, коÑоÑÑе заÑем оÑобÑажаÑÑÑÑ Ð½Ð° неÑколÑкиÑ
ÑзÑкаÑ
, или еÑли Ð²Ñ Ñ
оÑиÑе ÑмеÑиваÑÑ ÑзÑки или ÑÐµÐ¶Ð¸Ð¼Ñ Ð·Ð°Ð¿Ð¸Ñи в дизайне.