๐ Flex
Flex๋ ๋ ์ด์์ ๋ฐฐ์น๋ฅผ ์ํด ๊ณ ์๋ ๊ธฐ๋ฅ์ด๋ค.
๋๋ฌธ์ float๋ inline-block๋ณด๋ค ๋ ํธ๋ฆฌํ๊ณ ๊ฐ๋ ฅํ ์์ฑ๋ค์ ์ฌ์ฉํ ์ ์๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋ ์ด์์ ๋ฐฐ์น์ ์ฌ์ฉ๋๋ ์์ฑ๋ค์ ๋๋ถ๋ถ ์ปจํ ์ด๋์ ์ ์ฉํ๊ณ , ์์ดํ ๋ค์ ์ ์ฉ๋ ์์ฑ์ ๋ฐ๋ผ ๋ฐฐ์น๋๋ค.
๋ฐ๋ผ์ flex๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์๋์ ๊ฐ์ container์ item ๊ตฌ์กฐ๊ฐ ํ์ํ๋ค.
<div class="container">
<div class="item">flex</div>
<div class="item">box</div>
<div class="item">!!!</div>
</div>
์ฌ๊ธฐ์ container๋ Flex container, item์ Flex item์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
Flex ์์ฑ์ ์ปจํ ์ด๋์ ์ ์ฉํ๋ ์์ฑ๊ณผ ์์ดํ ์ ์ ์ฉํ๋ ์์ฑ, ๋ ๊ฐ์ง๋ก ๋๋ ์ ์๋ค.
๐ ์ปจํ ์ด๋์ ์ ์ฉํ๋ ์์ฑ
๐ display: flex;
flex๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ display๋ฅผ flex๋ก ์ง์ ํด์ค์ผ ํ๋ค.
.container {
display: flex;
}
display๋ฅผ flex๋ก ์ง์ ํ๋ฉด ์์ดํ ๋ค์ ๊ฐ๋ก๋ก ๋ฐฐ์น๋๋ค.
์ด๋ width๋ ์๊ธฐ ์์ ์ width๋งํผ, height์ ์ปจํ ์ด๋์ ๋์ด๋งํผ ์ฐจ์งํ๊ฒ ๋๋ค.
๐ flex-direction
์์ดํ ๋ค์ ๋ฐฐ์นํ ๋ ๊ธฐ์ค์ด ๋๋ ์ถ์ ๋ฐฉํฅ์ ๊ฒฐ์ ํ๋ ์์ฑ์ด๋ค.
์ถ์๋ ๋ฉ์ธ์ถ(Main Axis)๊ณผ ๊ต์ฐจ์ถ(Cross Axis)์ด ์กด์ฌํ๋ค.
๋ฉ์ธ์ถ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ดํ ๋ค์ด ์ ๋ ฌ๋๋ ๋ฐฉํฅ์ ์ถ์ด๊ณ , ๊ต์ฐจ์ถ์ ๋ฉ์ธ์ถ์ ์์ง์ธ ์ถ์ ๋งํ๋ค.
.container {
flex-direction: row; /* Default value */
/* flex-direction: column; */
/* flex-direction: row-reverse; */
/* flex-direction: column-reverse; */
}
flex-direction์์ ์ค์ ํ ์ ์๋ value๋ 4๊ฐ์ง๊ฐ ์๋ค.
row | ์์ดํ ๋ค์ ํ(๊ฐ๋ก) ๋ฐฉํฅ์ผ๋ก ๋ฐฐ์นํ๋ค. |
row-reverse | ์์ดํ ๋ค์ row์ ์ญ๋ฐฉํฅ์ผ๋ก ๋ฐฐ์นํ๋ค. |
column | ์์ดํ ๋ค์ ์ด(์ธ๋ก) ๋ฐฉํฅ์ผ๋ก ๋ฐฐ์นํ๋ค. |
column-reverse | ์์ดํ ๋ค์ column์ ์ญ๋ฐฉํฅ์ผ๋ก ๋ฐฐ์นํ๋ค. |
row์์์ ๋ฉ์ธ์ถ์ ๊ฐ๋ก์ถ, ๊ต์ฐจ์ถ์ ์ธ๋ก์ถ์ด๊ณ
column์์์ ๋ฉ์ธ์ถ์ ์ธ๋ก์ถ, ๊ต์ฐจ์ถ์ ๊ฐ๋ก์ถ์ด๋ค.
๐ flex-wrap
flex-item๋ค์ด flex-container์ ํ ์ค๋ก ์ ๋ด๊ธธ ๋ ๊ฐ์ ๋ก ํ ์ค์ ๋ฐฐ์น๋๊ฒ ํ ๊ฒ์ธ์ง, ์ค๋ฐ๊ฟํ ๊ฒ์ธ์ง ๊ฒฐ์ ํ๋ ์์ฑ์ด๋ค.
.container {
flex-wrap: nowrap; /* Default value */
/* flex-wrap: wrap; */
/* flex-wrap: wrap-reverse; */
}
nowrap | ์์ดํ ๋ค์ด ์ปจํ ์ด๋๋ฅผ ๋ฒ์ด๋๋๋ผ๋ ํ ์ค์ ๋ฐฐ์นํ๋ค. |
wrap | ์์ดํ ๋ค์ด ์ปจํ ์ด๋๋ฅผ ๋ฒ์ด๋๋ฉด ์ค๋ฐ๊ฟ๋๋ค. |
wrap-reverse | wrap๊ณผ ๋์ผํ์ง๋ง ์ญ์์ผ๋ก ๋ฐฐ์น๋๋ค. (์์์ ๋์ ๋ฐ๋๋ก) |
๐ flex-flow
flex-direction๊ณผ flex-wrap ์์ฑ์ ๋จ์ถ ์์ฑ์ด๋ค.
flex-direction๊ณผ flex-wrap์์ผ๋ก ์์ฑํ๊ณ , ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ๋ค.
.container {
flex-flow: row wrap;
/* ์๋์ ๋ ์ค์ ์ค์ฌ ์ด ๊ฒ */
/* flex-direction: row; */
/* flex-wrap: wrap; */
}
๐ justify-content
flex-item๋ค์ ๋ฉ์ธ์ถ ๋ฐฉํฅ์ผ๋ก ์ ๋ ฌํ๋ ์์ฑ์ด๋ค.
์ ๋ ฌ์๋ ๋ฉ์ธ์ถ ์ ๋ ฌ๊ณผ ๊ต์ฐจ์ถ ์ ๋ ฌ ๋ ๊ฐ์ง๊ฐ ์กด์ฌํ๋๋ฐ,
justify๋ ๋ฉ์ธ์ถ ์ ๋ ฌ, align์ธ ๊ต์ฐจ์ถ ์ ๋ ฌ์ ์๋ฏธํ๋ค. (์์ผ๋ก ์์ฃผ ์ฌ์ฉ๋๊ณ , grid์์๋ ๋์ค๋ ๊ฐ๋ ์ด๋๊น ์ธ์๋๊ธฐ)
.container {
justify-content: start; /* Default value */
/* justify-content: end; */
/* justify-content: center; */
/* justify-content: space-between; */
/* justify-content: space-around; */
/* justify-content: space-evenly; */
}
start | ์์ดํ ๋ค์ ์์์ ์ผ๋ก ์ ๋ ฌํ๋ค. |
end | ์์ดํ ๋ค์ ๋์ ์ผ๋ก ์ ๋ ฌํ๋ค. |
center | ์์ดํ ๋ค์ ์ค์์ ์ ๋ ฌํ๋ค. |
space-between | ์์ดํ ๋ค ์ฌ์ด์ ๊ท ์ผํ ์ฌ๋ฐฑ์ ์ค๋ค. |
space-around | ์์ดํ ๋ค์ ๋๋ ์ ๊ท ์ผํ ์ฌ๋ฐฑ์ ์ค๋ค. |
space-evenly | ์์ดํ ๋ค ์ฌ์ด์ ์ ๋์ ๊ท ์ผํ ์ฌ๋ฐฑ์ ์ค๋ค. |
๐ align-items
flex-item๋ค์ ๊ต์ฐจ์ถ ๋ฐฉํฅ์ผ๋ก ์ ๋ ฌํ๋ ์์ฑ์ด๋ค.
.container {
align-items: stretch; /* Default value */
/* align-items: start; */
/* align-items: end; */
/* align-items: center; */
/* align-items: baseline; */
}
stretch | ์์ดํ ๋ค์ ๊ต์ฐจ์ถ ๋ฐฉํฅ์ผ๋ก ๋๊น์ง ๋๋ฆฐ๋ค. |
start | ์์ดํ ๋ค์ ์์์ ์ผ๋ก ์ ๋ ฌํ๋ค. |
end | ์์ดํ ๋ค์ ๋์ ์ผ๋ก ์ ๋ ฌํ๋ค. |
center | ์์ดํ ๋ค์ ์ค์์ ์ ๋ ฌํ๋ค. |
baseline | ์์ดํ ๋ค์ ํ ์คํธ ๋ฒ ์ด์ค๋ผ์ธ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ค. |
๐ align-content
flex-wrap: wrap;์ผ๋ก ์ธํด ์์ดํ ๋ค์ด 2์ค ์ด์์ด ๋์ ๋ ์์ง์ถ ๋ฐฉํฅ์ ์ ๋ ฌ์ ๊ฒฐ์ ํ๋ ์์ฑ์ด๋ค.
.container {
flex-wrap: wrap;
align-content: stretch;
/* align-content: flex-start; */
/* align-content: flex-end; */
/* align-content: center; */
/* align-content: space-between; */
/* align-content: space-around; */
/* align-content: space-evenly; */
}
space๊ด๋ จ value๋ค์ ๊ต์ฐจ์ถ์ ๊ธฐ์ค์ผ๋ก ์์ดํ ๋ค์ด justify-content์ ๋๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฌ๋ฐฑ์ ๋๋ ๊ฐ๋๋ค.
๐ ์์ดํ ์ ์ ์ฉํ๋ ์์ฑ
๐ flex-basis
์์ดํ ์ ๊ธฐ๋ณธ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ํ๋ ์์ฑ์ด๋ค.
flex-direction์ด row์ด๋ฉด width, column์ด๋ฉด height๋ฅผ ์กฐ์ ํ๋ค.
.item {
flex-basis: auto; /* Default value */
/* flex-basis: 0; */
/* flex-basis: 50%; */
/* flex-basis: 200px; */
/* flex-basis: 10rem; */
/* flex-basis: content; */
}
์์ดํ ์ ํฌ๊ธฐ๊ฐ flex-basis๋ก ์ค์ ํ ๊ฐ๋ณด๋ค ๋ ํด ๊ฒฝ์ฐ์ ์๋์ ํฌ๊ธฐ๋ฅผ ์ ์งํ๋ค.
๐ flex-grow
์์ดํ ๋ค์ด ์ปจํ ์ด๋ ๋ด๋ถ์์ ์ฌ๋ฐฑ์ ์ผ๋ง๋งํผ ๋๋์ด ๊ฐ์ง ์ ์๋์ง๋ฅผ ๊ฒฐ์ ํ๋ ์์ฑ์ด๋ค.
0๋ณด๋ค ํฐ ์ซ์๋ฅผ ํ ๋นํ๊ฒ ๋๋ฉด ์์ดํ ์ด flexibleํ ๋ฐ์ค๋ก ๋ณํ๊ฒ ๋๋ค.
๋ฐ๋ผ์ ์ปจํ ์ด๋ ๋ด๋ถ์ ์ฌ๋ฐฑ์ flex-grow์ ํ ๋นํ ์ซ์์ ๋น์จ๋งํผ ๊ฐ ์์ดํ ์ด ๋๋์ด ๊ฐ์ง๋ค.
๊ธฐ๋ณธ๊ฐ์ด 0์ด๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ์ง์ ํ์ง ์์ผ๋ฉด ํฌ๊ธฐ๊ฐ ๋์ด๋์ง ์๋๋ค.
.item {
flex-grow: 1;
/* flex-grow: 0; */ /* Default value */
}
๐ flex-shrink
์์ดํ ์ ํฌ๊ธฐ๊ฐ ์ปจํ ์ด๋๋ณด๋ค ํด ๋ ์ด๋ป๊ฒ ์ถ์ํ ์ง ๊ฒฐ์ ํ๋ ์์ฑ์ด๋ค.
0๋ณด๋ค ํฐ ์ซ์๋ฅผ ํ ๋นํ๋ฉด ์์ดํ ์ด flexibleํ ๋ฐ์ค๋ก ๋ณํ๊ฒ ๋๋ค.
๋ฐ๋ผ์ ํ ๋นํ ์ซ์์ ๋ฐ๋ผ ์ปจํ ์ด๋ ๋ด๋ถ์์ ์์ดํ ์ ํฌ๊ธฐ๊ฐ ์ถ์๋๋ค.
flex-shrink์ ๊ธฐ๋ณธ๊ฐ์ 1์ด๊ธฐ ๋๋ฌธ์ ์์ดํ ์ ํฌ๊ธฐ๋ฅผ ๊ณ ์ ํ๊ณ ์ถ๋ค๋ฉด value๋ฅผ 0์ผ๋ก ๋ฐ๊พธ๋ฉด ๋๋ค.
.item {
flex-shrink: 0;
/* flex-shrink: 1; */ /* Default value */
}
๐ flex
flex-grow, flex-shrink, flex-basis์ ๋จ์ถ ์์ฑ์ด๋ค.
.item {
flex: 1;
/* flex-grow: 1; flex-shrink: 1; flex-basis: 0%; */
flex: 1 1 auto;
/* flex-grow: 1; flex-shrink: 1; flex-basis: auto; */
flex: 1 500px;
/* flex-grow: 1; flex-shrink: 1; flex-basis: 500px; */
}
flex-basis๋ฅผ ์๋ตํด์ ์ฐ๋ฉด flex-basis์ ๊ฐ์ 0์ด ๋๋ค.
๐ align-self
ํ์ฌ ์์ดํ ์ ๊ต์ฐจ์ถ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ ์ ์๋ ์์ฑ์ด๋ค.
.item {
align-self: auto; /* Default value */
/* align-self: stretch; */
/* align-self: flex-start; */
/* align-self: flex-end; */
/* align-self: center; */
/* align-self: baseline; */
}
auto๋ align-items ์ค์ ์ ์์๋ฐ๋๋ค.
๐ order
ํ์ฌ ์์ดํ ์ ๋ฐฐ์น ์์๋ฅผ ๊ฒฐ์ ํ๋ ์์ฑ์ด๋ค.
์์ดํ ์ ์ ๋ ฌ ์์๋ order ๊ฐ์ ์ค๋ฆ์ฐจ์์ด๊ณ , ๊ฐ์ ๊ฐ์ผ ๊ฒฝ์ฐ ์์ค ์ฝ๋์ ์์๋๋ก ์ ๋ ฌ๋๋ค.
์ฃผ์โ
order๋ ๋ ผ๋ฆฌ์ ์ธ ์์๋ ํญ ์์์๋ ์ ํ ์๊ด ์์ด ํ๋ฉด์ ๋ณด์ด๋ ์์์๋ง ์ํฅ์ ์ค๋ค.
๋ฐ๋ผ์ ๋น์๊ฐ์ ๋งค์ฒด์ ์ ์ฉํ๋ ๊ฒ์ ์ข์ง ์๋ค.
'Style Sheet > CSS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CSS] ๋ผ์ธ ์ ์ ํํ๊ธฐ (๋ง์ค์ํ ๋ง๋๋ ๋ฐฉ๋ฒ) (0) | 2022.07.06 |
---|---|
[CSS] em๊ณผ rem (0) | 2022.07.06 |
[CSS] ๊ฐ์ด๋ฐ ์ ๋ ฌ (Center align) (0) | 2022.07.06 |