css
CSS - 플렉스박스 : 항목(Flex items)
플렉스 항목(Flex items)은 플렉스 컨테이너 안에서 플렉스 라인(Flex Line) 이라는 가상의 선을 따라 정렬합니다.
다음 표의 속성을 사용할 수 있습니다.
처음 나오는 item 은 “A” 이고 마지막으로 나오는 item 은 “E”입니다. 여기서 order 가 3이면 가장 큰 수이므로 “A”를 마지막에 배치하고, 그 다음 작은 수는 order 가 2이므로 “A” 다음에 “E”를 배치하면 다음 결과를 얻습니다.
다음 그림을 통해 좀 더 확실히 알 수 있지 않을까 싶습니다.
아래 그림의 결과가 단번에 이해가 안갈 수도 있습니다. 자세히 보면 항목을 기준으로 배치한 것이 아니라 컨테이너를 기준으로 하였습니다.
아래 그림을 보면 4번째 컨테이너의 align-self 속성을 baseline 으로 설정하였는데, 컨테이너가 밑으로 내려간 것을 확인할 수 있습니다. baseline 은 문자를 기준으로 정렬되기 때문입니다.
다음 표의 속성을 사용할 수 있습니다.
값 | 설 명 |
---|---|
order | Item 의 순서를 설정. 기본값: 0 가장 작은 수를 첫 부분에 가장 큰 수를 마지막에 배치. (음수 사용 가능합니다.) |
flex | Item 의 너비 비율을 설정. (음수는 사용할 수 없음)
[flex-grow] [flex-shrink] [flex-basis] 순으로 설정. Ex.1) flex: 1 1 36px; /* 증가 감소 기본 너비 */ Ex.2) flex: 1 1; /* 1 1 auto 와 같음 */ Ex.3) flex: auto; /* 1 1 auto 와 같음 */ |
align-self | 수직 방향으로 item 을 개별적으로 배치. (align-items 속성보다 우선 적용됨)
|
Order 예제
이 속성은 컨테이너 안에 있는 플렉스 항목의 순서를 설정할 수 있습니다.처음 나오는 item 은 “A” 이고 마지막으로 나오는 item 은 “E”입니다. 여기서 order 가 3이면 가장 큰 수이므로 “A”를 마지막에 배치하고, 그 다음 작은 수는 order 가 2이므로 “A” 다음에 “E”를 배치하면 다음 결과를 얻습니다.
<style>
.container {
background-color: #efefef;
width: 170px;
height: 170px;
padding: 10px;
margin: 10px;
display: inline-flex;
}
.container div {
width: 50px;
border: 1px solid #000;
background-color: yellow;
text-align: center;
}
/* 처음 나오는 item은 A */
.container div:first-child{
order: 3;
background-color: blue;
}
/* 마지막으로 나오는 item은 E */
.container div:last-child{
order: 2;
background-color: red;
}
</style>
<div class="container">
<div>A</div><div>B</div><div>C</div><div>D</div><div>E</div>
</div>
다음 그림을 통해 좀 더 확실히 알 수 있지 않을까 싶습니다.
Flex 예제
이 속성은 플렉스 항목의 너비를 상대적인 비율로 설정할 수 있습니다.<style>
.container {
background-color: #efefef;
width: 170px;
height: 170px;
padding: 10px;
margin: 10px;
display: flex;
}
.container div:first-child{ flex: 1 1 0; }
.container div:nth-child(2){ flex: 2 2 0; }
.container div:nth-child(3){ flex-basis: 15px; }
.container div {
width: 50px;
height: 50px;
border: 1px solid #000;
background-color: yellow;
text-align: center;
}
</style>
<div class="container">
<div>A</div><div>B</div><div>C</div>
</div>
다음 그림에 명시된 값을 flex 속성에 다르게 설정했을 때의 결과입니다.
align-self 예제
이 속성은 수직 방향으로 item 을 개별적으로 배치할 수 있습니다. align-items 속성보다 우선으로 적용되며 플렉스 라인을 기준으로 정렬됩니다.아래 그림의 결과가 단번에 이해가 안갈 수도 있습니다. 자세히 보면 항목을 기준으로 배치한 것이 아니라 컨테이너를 기준으로 하였습니다.
<style>
.container1, .container2, .container3, .container4, .container5 {
background-color: #efefef;
width: 170px;
height: 170px;
padding: 10px;
margin: 10px;
display: inline-flex;
}
.container2 div{ align-self: flex-end; }
.container4 div{ align-self: center; }
.container1 div, .container2 div, .container3 div, .container4 div, .container5 div {
width: 50px;
height: 50px;
border: 1px solid #000;
background-color: yellow;
text-align: center;
}
</style>
<div class="container1">
<div>A</div><div>B</div><div>C</div><div>D</div><div>E</div>
</div>
<div class="container2">
<div>A</div><div>B</div><div>C</div><div>D</div><div>E</div>
</div>
<div class="container3">
<div>A</div><div>B</div><div>C</div><div>D</div><div>E</div>
</div>
<div class="container4">
<div>A</div><div>B</div><div>C</div><div>D</div><div>E</div>
</div>
<div class="container5">
<div>A</div><div>B</div><div>C</div><div>D</div><div>E</div>
</div>
아래 그림을 보면 4번째 컨테이너의 align-self 속성을 baseline 으로 설정하였는데, 컨테이너가 밑으로 내려간 것을 확인할 수 있습니다. baseline 은 문자를 기준으로 정렬되기 때문입니다.
<style>
.container1, .container2, .container3, .container4, .container5, .container6 {
background-color: #efefef;
width: 140px;
height: 170px;
padding: 10px;
margin: 10px;
display: inline-flex;
align-items: center;
}
.container1 div:nth-child(2) { align-self: flex-start; }
.container2 div:nth-child(2) { align-self: flex-end; }
.container3 div:nth-child(2) { align-self: center; }
.container4 div:nth-child(2) { align-self: baseline; }
.container5 div:nth-child(2) { align-self: stretch; }
.container6 div:nth-child(2) { align-self: auto; }
.container1 div, .container2 div, .container3 div, .container4 div, .container5 div, .container6 div {
width: 50px;
border: 1px solid #000;
background-color: yellow;
text-align: center;
}
</style>
<div class="container1">
<div>A</div><div>B</div><div>C</div><div>D</div><div>E</div>
</div>
<div class="container2">
<div>A</div><div>B</div><div>C</div><div>D</div><div>E</div>
</div>
<div class="container3">
<div>A</div><div>B</div><div>C</div><div>D</div><div>E</div>
</div>
<div class="container4">
<div>A</div><div>B</div><div>C</div><div>D</div><div>E</div>
</div>
<div class="container5">
<div>A</div><div>B</div><div>C</div><div>D</div><div>E</div>
</div>
<div class="container6">
<div>A</div><div>B</div><div>C</div><div>D</div><div>E</div>
</div>
0 댓글