CSS Flex 활용 (Flexible Box) 2

flex (아이템에 적용)

flex는 flex-grow,flex-shrink,flex-basis가 합쳐진 축약 속성입니다.
아이템의 크기,공간,비율등을 결정합니다.

flex-grow:(number, 기본값 0)

아이템이 공간내에서 가지는 비율을 결정합니다.
값은 px이 아닌 비율이며, 아이템들이 빈 공간이 없게 풀로 표시됩니다.

<style>
    .item--1 {
        flex-grow:3;
        background:#0080cc;
    }
    .item--2 {
        flex-grow:1;
        background:#cc3a2f;
    }
    .item--3 {
        flex-grow:2;
        background:#01cc49;
    }
    .item--4 {
        flex-grow:1;
        background:#cca514;
    }
    .item--5 {
        flex-grow:2;
        background:#9a25cc;
    }
</style>
RESULT

flex

flex-shrink:(number, 초기값 1)

아이템이 넘칠때 요소를 어떻게 처리할지 결정합니다.
flex-basis 속성과 같이 쓰입니다.
값이 0이라면 아이템이 넘쳐도 넓이가 flex-basis 값 밑으로 떨어지지 않습니다.
flex-grow는 확대 비율, flex-shrink는 축소 비율이라고 생각하면 쉽습니다.

<style>
    .box {
        display:flex;
        width:500px;
    }
    .item {
        flex-basis:150px;
        padding:20px 10px;
        color:#fff;
    }
    .item:first-letter {font-size:50px}
    .item--1 {
        flex-shrink:0;
        background:#0080cc;
    }
    .item--2 {
        flex-shrink:2;
        background:#cc3a2f;
    }
</style>
RESULT

flex

컨테이너의 넓이값 500px을 주고, 각 아이템의 넓이는 flext-basis로 150px로 선언했습니다.
컨테이너의 넓이값을 넘어가게 되므로 각각의 아이템들을 500px내에서 유연하게 넓이값을 가지게 됩니다.
하지만 flex-shrink을 0으로 지정함으로써 넓이를 고정할 수 있습니다.

flex-basis:(number, 초기값 auto)

아이템의 크기를 설정합니다.

<style>
    .box {
        display:flex;
    }
    .item {
        flex-basis:500px;
        padding:20px 10px;
        color:#fff;
    }
</style>
RESULT

flex

flex-wrap가 선언되어 있지 않아서 넘치는 부분은 유연하게 넓이가 조절됩니다.

<style>
    .box {
        display:flex;
        flex-wrap:wrap;
    }
    .item {
        flex-basis:500px;
        padding:20px 10px;
        color:#fff;
    }
</style>
RESULT

flex

flex-wrap가 선언되어 flex-basis에 적용된 넓이대로 표시됩니다.

flex:(flex-grow, flex-shrink, flex-basis)

세 가지 속성을 한번에 선언할 수 있습니다.
선언한 매개변수 숫자에 따라 적용되는 속성이 다릅니다.

값이 한 개일 때

숫자를 지정하면 flex-grow 입니다.
길이 또는 퍼센트를 지정하면 flex-basis입니다.
none, auto, initial 중 하나를 지정할 수 있습니다.

값이 두 개일 때

첫 번째 값은 숫자이고 flex-grow입니다.
두 번재 값은 숫자를 지정하면 flex-shrink 입니다.
길이 또는 퍼센트, auto를 지정하면 flex-basis 입니다.

값이 세 개일 때

flex-grow, flex-shrink, flex-basis 순입니다.

기타

flex:initial : flex:0 1 auto 동일
flex:auto : flex:1 1 auto 동일
flex:none : flex:0 0 auto 동일

align-self (아이템에 적용)

컨테이너에서 적용했던 align-items의 아이템 버전입니다.

<style>
    .box {
        display:flex;
    }
    .item {
        flex-basis:350px;
        padding:20px 10px;
        color:#fff;
    }
    .item--3 {
        align-self:center;
        background:#01cc49;
    }
</style>
RESULT
align-self:center

flex

order

아이템의 순서를 정합니다.
마크업 구조는 바뀌지 않습니다.

<style>
    .item--1 {
        order:4;
        background:#0080cc;
    }
    .item--2 {
        order:2;
        background:#cc3a2f;
    }
    .item--3 {
        align-self:center;
        order:1;
        background:#01cc49;
    }
    .item--4 {
        order:5;
        background:#cca514;
    }
    .item--5 {
        order:5;
        background:#9a25cc;
    }
</style>
RESULT

flex