Sobes.tech
Junior

Ինչպես են աշխատում flex-grow և flex-shrink հատկությունները։

sobes.tech AI

Պատասխան AI-ից

flex-grow և flex-shrink որոշում են, թե ինչպես են տարրերը ճկուն կերպով հարմարեցնում իրենց չափը flex կոնտեյների ներսում, համապատասխանաբար, երբ կա ազատ տարածք կամ երբ տարածքը քիչ է:

flex-grow - որոշում է գործակիցը, ըստ որի տարրը պետք է մեծանա, երբ կոնտեյնում կա ազատ տարածք: Դեպի ստանդարտ արժեքը 0 է (տարրը չի ընդլայնվում): Եթե մի քանի տարր ունեն flex-grow մեծ արժեք, քան 0, ապա ազատ տարածքը բաշխվում է նրանց միջև flex-grow արժեքների հարաբերությամբ:

.item {
  flex-grow: 1; /* Տարրը կօգտագործի բոլոր հասանելի ազատ տարածքը */
}

flex-shrink - որոշում է գործակիցը, ըստ որի տարրը պետք է փոքրանա, երբ կոնտեյնում քիչ տեղ կա: Դեպի ստանդարտ արժեքը 1 է (տարրը փոքրանում է մյուս փոքրացող տարրերի հետ հարաբերականորեն): 0 արժեքը կանխում է տարրի փոքրացումը:

.item {
  flex-shrink: 0; /* Տարրը չի փոքրանա */
}

Համատեղ flex-basis-ի հետ նրանք կազմում են կարճացված flex հատկությունը՝ flex: <flex-grow> <flex-shrink> <flex-basis>:

Օրինակ՝

<div class="container">
  <div class="item item-1">Item 1</div>
  <div class="item item-2">Item 2</div>
</div>
.container {
  display: flex;
  width: 400px; /* Կոնտեյների ֆիքսված լայնություն */
}

.item {
  flex-basis: 100px; /* Բոլոր տարրերի հիմնական չափը */
}

.item-1 {
  flex-grow: 1; /* Item 1-ը կօգտագործի ազատ տարածքը */
}

.item-2 {
  flex-shrink: 0; /* Item 2-ը չի փոքրանա */
}

Եթե կոնտեյները լայն է 200px-ից (100px + 100px), ապա item-1 կօգտագործի մնացած ազատ տարածքը: Եթե արդեն 200px է, ապա item-2 կմնա իր հիմնական չափով 100px, իսկ item-1 կկրճատվի։