<body>
<div class="father">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
</div>
</body>
위는 예시로 다룰 html 코드고 아래는 css 코드입니다.
.father {
display: flex;
}
.box {
width: 300px;
height: 300px;
background-color: blue;
border: 1px solid white;
display: flex;
justify-content: center;
align-items: center;
color: white;
font-size: 50px;
}
.father {
display: flex;
flex-direction: row;
justify-content: ...;
align-items: ...;
height: 100vh; // "충분한 height - vh(viewport height: 화면 높이)"
}
다양한 옵션들 밑바탕에 깔린 규칙을 axis(축)이라고 부릅니다. main axis는 justify-content가 영향을 주는 축이고, 반대로 cross axis는 align-items가 영향을 주는 축입니다. flex-direction이 row일 경우에 main axis는 수평축의 성질을 가지고, cross axis가 수직축의 성질을 가집니다. flex-direction이 column일 경우에는 상황이 달라집니다. 이 때 main axis는 수직축이의 성질을 가지고, cross axis는 수평축의 성질을 가집니다. display에 flex를 부여했을 때 자동생성되는 옵션인 flex-direction의 기본값은 row입니다.
왜 시작점, 종료점이라는 단어를 썼는지는 flex-direction에 따라서 justify-content의 기준이 달라지기 때문입니다. 아래 예시를 확인해보세요.
.father {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
height: 100vh;
}
.box {
width: 300px;
height: 300px;
}
display에 flex를 부여했을 때 자동생성되는 옵션인 flex-wrap의 기본값은 nowrap입니다. 이 때 임의로 지정한 width 또는 height는 무시하고 적용됩니다.
flex 관련 속성=을 부모 대신에 자식에게 직접 부여하여 컨트롤 가능한 경우도 있습니다. 바로 align-self입니다. 개별적으로 컨트롤이 필요할 경우에 유용하게 사용할 수 있습니다.
.father {
display: flex;
flex-direction: column;
justify-content: center;
height: 100vh;
}
.box {
width: 300px;
height: 300px;
background-color: blue;
border: 1px solid white;
display: flex;
justify-content: center;
align-items: center;
color: white;
font-size: 50px;
}
.box.first-child {
align-self: flex-end;