예전에는 HTML 화면을 배치하기 위해서 float 이라는 속성을 많이 이용했다고 한다.
그런데 float 은 예상하지 못했던 동작들이 많이 발생하고, 원하는 대로 화면을 구성하기 위해서 필요없는 HTML 요소를 추가적으로 작성해야하는 일이 생길수도 있다.
그런데 flex 를 사용하면 이런 불편함을 해소할 수 있을 뿐더러, 반응형웹도 수월하게 제작하는 것이 가능해진다.
사용방법은 display 속성에 flex 라고 정의만 해주면 된다.
display : flex
그 후 컨테이너의 속성과, 컨테이너 안의 아이템들의 속성을 정의해서 요소를 배치한다.
flex는 컨테이너 속성 과 아이템 속성 이 있다.
컨테이너 속성
- flex-direction
- flex-wrap
- flex-flow
- align-items
- align-content
정렬할 방향을 지정한다.
#주의할 점
flex-direction 을 지정하지 않게 되면 기본적으로 왼쪽에서 오른쪽으로 정렬된다. 그런데 만약 원하는대로 움직이지 않는다면, 상위 태그의 direction 속성 값이 rtl 인지 확인해봐야 한다. 이럴 경우는 거의 없을 것 같지만 body 의 direction 이 rtl 인 경우는 반대로 정렬된다.
지정한 공간을 벗어났을 때 요소들의 배치를 지정한다.
flex-direction, flex-wrap 의 속성을 단축해서 쓸 수 있다. 아직 지원하지 않는 브라우져가 있으니 확인해봐야 한다.
플랙스 요소들을 가로선 상에서 정렬한다.
플랙스 요소들을 세로선 상에서 정렬한다.
세로선 상의 여분의 공간이 있는 경우, 플랙스 컨테이서 사이의 여분의 간격을 조정한다.
아이템 속성
- order
- flex-grow
- flex-shrink
- flex-basis
- flex
- align-self
기본적으로 플랙스 아이템들은 왼쪽에서 오른쪽의 순서대로 배치되는데, order 를 통해서 특정 아이템을 먼저 배치하는 것이 가능하다.
아래 소스의 결과는?
<div class="div_container">
<div class="div_box">1</div>
<div class="div_box">2</div>
<div class="div_box">3</div>
<div class="div_box">4</div>
</div>
.div_box {
width: 200px;
height: 100px;
margin: 20px 20px;
background-color: lightcoral;
text-align: center;
line-height: 100px;
}
.div_container :nth-child(1) {
order: 4;
}