๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ปSTUDY/CSS

[CSS] flex ์†์„ฑ (flex-basis, flex-grow, flex-shrink)

๋ฐ˜์‘ํ˜•

1. flex-basis : ์•„์ดํ…œ์˜ ๊ธฐ๋ณธํฌ๊ธฐ

๊ธฐ๋ณธ๊ฐ’ auto

#container {
    display: flex;
    max-width: 800px;
    margin: auto;
    border: 3px solid #000;
    background-color: #fff;
}
.item {
    font-size: 40px;
    flex-basis: auto;
}

#container { /* ์œ„์™€ ๋™์ผ */ }
.item {
    font-size: 40px;
    flex-basis: 120px;
}



2. flex-grow : ์•„์ดํ…œ์˜ ๋„ˆ๋น„ ๋น„์œจ

๊ธฐ๋ณธ๊ฐ’ 0

  • flex-grow ๊ฐ’์ด 1์ด๋ฉด 1:1 ๋น„์œจ๋กœ ๋งž์ถฐ์ง€๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์—ฌ๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ ๋น„์œจ์ด ๋งž์ถฐ์ง€๋Š” ๊ฒƒ์ด๋‹ค.
.item {
    flex-grow: 1;
}

๋„ˆ๋น„๋ฅผ ๋˜‘๊ฐ™์ด ๋‚˜ํƒ€๋‚ด๊ณ  ์‹ถ์„ ๋•Œ๋Š”,

.item {
    flex-grow: 1;
    flx-basis: auto;
}



3. flex-shrink : ์•„์ดํ…œ์˜ ๋„ˆ๋น„ ๊ฐ์†Œ ๋น„์œจ

๊ธฐ๋ณธ๊ฐ’ 1

  • ๋„ˆ๋น„๊ฐ’(width, basis)์ด ์žˆ์„ ๋•Œ ์ ์šฉ๋˜๋ฉฐ ์ฐฝ์ด ์ค„์–ด๋“ค ๋•Œ ํ™•์ธ.
  • ์ฐฝ์ด ์ค„์–ด๋“ค ๋•Œ ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์ˆœ๊ฐ„๋ถ€ํ„ฐ ์•„์ดํ…œ์ด ์ค„์–ด๋“ ๋‹ค.
.item {
    flex-basis: 120px;
    flex-shrink: 1;
}

ํ™”๋ฉด์ฐฝ์ด ์ค„์–ด๋“ค ๋•Œ ์˜ค๋ฅธ์ชฝ ๋นจ๊ฐ„์นธ์ด ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์‹œ์ž‘ ๋ถ€๋ถ„์ด๋‹ค. ๋นจ๊ฐ„์นธ์„ ๋„˜์œผ๋ฉด item์ด ์ผ์ •ํ•œ ๊ฐ„๊ฒฉ๋Œ€๋กœ ์ค„์–ด๋“ ๋‹ค.

2๋ฒˆ item๋งŒ flex-shrink: 2๋ฅผ ์ ์šฉํ•ด๋ณด์ž.

.item {
    flex-basis: 120px;
    flex-shrink: 1;
}
.item:nth-child(2) {
    flex-shrink: 2;
}

flex shrink ๊ณ„์‚ฐ๋ฒ•
120(item๋„ˆ๋น„) * 1(flex-shrink) = 120
120(item๋„ˆ๋น„) * 2(flex-shrink) = 240
120 : 240 ==> 1 : 2 ๋น„์œจ์„ ๊ฐ€์ง„๋‹ค.
1,3,4,5 item ๋ฐ•์Šค๋Š” 3๋ถ„์˜ 1๋งŒํผ ๋„ˆ๋น„๊ฐ€ ์ค„์–ด๋“ค๊ณ  2๋ฒˆ item๋ฐ•์Šค๋Š” 3๋ถ„์˜ 2๋งŒํผ ์ค„์–ด๋“œ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

04. flex: (flex-grow flex-shrink flex-basis)

.item {
    flex: 1 1 0;
    /* flex-grow๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ์†์„ฑ ์ƒ๋žต */
    flex: 1;
}

flex: 1์€ flex-grow: 1 ๊ณผ ๊ฐ™์€ ๊ฒƒ์œผ๋กœ flex: 1 1 0; ์œผ๋กœ ์ ์šฉ๋œ๋‹ค.

 

 

5. [๋ฒˆ์™ธ] ํ…์ŠคํŠธ๊ฐ€ ๋„˜์ณ๋„ ๊ฐ™์€ ๋„ˆ๋น„ ์œ ์ง€ํ•˜๊ธฐ

.item {
    flex: 1 0 20%;
    /* ๋ง์ค„์ž„ */
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}




Reference

http://www.devdic.com/css/reference/properties/flex-basis

https://chaeyoung2.tistory.com/9

 

๋ฐ˜์‘ํ˜•