1. flex를 적용하고 싶을 때는 item을 감싸고 있는 container에 display: flex를 적용 시켜야
container의 자식 엘리먼트인 item이 flex가 적용될 수 있다. (하단 이미지 참조)
만약 위처럼 flex를 사용하지 않고 inline-block을 사용할경우 아래와 같이 코드 명령어 사용이 많아진다.
(쓰지 않아도 될 코드가 많아진다.)
flex는 기본적으로 flex-shrink: 1;을 가지고 있어 item이 추가되더라도 유연하게 container안에 추가된다.
여기서 flex-shrink: 1;을 flex-shrink: 0;으로 바꿔준다면 item이 바깥으로 나가버리게 된다.
- flex-item으로 만들고 싶은 태그를 감싸고 있는 태그에 display:flex;를 적용 시킨다.
- display:flex;를 적용한 태그를 flex-container라고 부르고 그 자식들은 flex-item이라고 부른다.
- flex-container 자식들만 flex-item이 적용되고 flex-item에 자식들은 flex-item으로 만들고 싶으면 flex를 다시 적용해야 한다.
- flex-shrink라는 코드가 기본적으로 들어있고 기본값은 1이다.
-flex-shrink: 1; 일대는 무슨일이 있어도 flex-container안에서 너비를 해결하고, flex- shrink: 0;을 적용하면 무슨일이 있어도 적용된 px값을 유지한다.- flex-item은 줄바꿈 되라는 코드가 작성되기 전까지 절대 줄바꿈 되지 않는다.
- flex-item은 felx-container의 높이를 100% 상속받는다.
(조건 : height: auto; 일때)
→ height: auto = 100%
→ flex-item을 제외한 다른 요소들은 height: auto = 0으로 작동한다.
- flex는 inline-block단점을 보완한 속성값이라고 생각하면 된다.
- inline-block을 한줄에 같이 배치하고 싶으면 여백을 없애주고, 선을 사용하고 싶을땐 box-sizing: border-box;를 작성해줘야 하지만, flex-item은 felx-item으로만 만들어주면 한줄에 같이 배치할 수 있다.
ex)
*flex-item
.flex-container {
display: flex;
}
or
*inline-block
.inline-block-box {
font-size: 0;
}
.inline-block {
display: inline-block;
font-size: 16px;
box-sizing: border-box;
}
flex-item은 felx-container의 높이를 100% 상속받는다.
(조건 : height: auto; 일때)
→ height: auto = 100%
→ flex-item을 제외한 다른 요소들은 height: auto = 0으로 작동한다.
높이가 상속되는 flex-item
속성값을 작성할 때 flex를 생략해서 작성할 수 있고, 좌측과 우측은 left, right로도 작성 가능하다.
상단과 하단은 top, bottonm으로 작성 불가능하다.
이동 및 정렬등은 flex-item이 아닌 주체가 관리하기 때문에 flex-container에 정렬 명령어를 입력해야 된다.
flex-item은 기본적으로 height: auto = 100%를 가지고 있지만, 부모로부터 align-items를 상속받게 된다면 height: auto = 0이 되어진다.

마찬가지로 정렬하거나 줄바꿈 되어야하는 레이아웃 커스텀은 flex-container에 적용하여 item을 조종한다.
flex-item 세로정렬