๐ flex์ฐ์ต ๊ฐ๊ตฌ๋ฆฌ ์ฌ์ดํธ : http://flexboxfroggy.com/#ko
๐ mdn flex๊ฐ๋ ์ฝ๊ธฐ : https://developer.mozilla.org/ko/docs/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox
๐ flex์ ๋ํด
https://www.joshwcomeau.com/css/interactive-guide-to-flexbox/#wrapping
<!--html-->
<div id="container">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
<div class="box">5</div>
<div class="box">6</div>
</div>
<!--css-->
.box {
width: 100px;
height: 100px;
background-color: rosybrown;
border: 1px solid black;
}
: items๋ฅผ ์ ๋ ฌํ๊ธฐ ์ํด flexbox container์ด ํ์ํจ.
: "๋ฐ๋ก ์" ๋ถ๋ชจ์์์ display:flex๋ฅผ ํด์ผ, ์์์์์ธ items๊ฐ ๊ฐ๋ก ์ ๋ ฌ ๋จ.
#container{
height: 1000px;
display : flex;
}
flex-direction: row(๊ธฐ๋ณธ๊ฐ) / row-reverse/ column/ column-reverse ;
#container{
flex-direction: row(๊ธฐ๋ณธ๊ฐ) ;
justify-content: space-around; (๊ฐ๋ก์ถ ์ ๋ ฌ)
align-items: center; (์ธ๋ก์ถ ์ ๋ ฌ)
}
#container{
flex-direction: column;
justify-content: space-around; (์ธ๋ก์ถ ์ ๋ ฌ)
align-items: center; (๊ฐ๋ก์ถ ์ ๋ ฌ)
}
(flex-direction์ด row์ผ ๋)
์ฃผ์ถ์ ๋ฐ๋ผ ์ฝํ
์ธ ํญ๋ชฉ ๊ฐ ๋ฐ ๊ทธ ์ฃผ์์ ๊ณต๊ฐ์ ๋ถ๋ฐฐํ๋ ๋ฐฉ๋ฒ์ ์ ์ํฉ๋๋ค. / ๊ฐ๋ก ์ ๋ ฌ์ ์ค์ ํ๋ค๋ ์๋ฏธ.
justify-content:flex-start // ์์๋ค์ ์ปจํ
์ด๋์ ์ผ์ชฝ์ผ๋ก ์ ๋ ฌํฉ๋๋ค.
justify-content:flex-end // ์์๋ค์ ์ปจํ
์ด๋์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ ๋ ฌํฉ๋๋ค.
justify-content:center // ์์๋ค์ ์ปจํ
์ด๋์ ๊ฐ์ด๋ฐ๋ก ์ ๋ ฌํฉ๋๋ค.
justify-content:space-between // ์์๋ค ์ฌ์ด์ ๋์ผํ ๊ฐ๊ฒฉ์ ๋ก๋๋ค.
justify-content:space-around // ์์๋ค ์ฃผ์์ ๋์ผํ ๊ฐ๊ฒฉ์ ๋ก๋๋ค.
(flex-direction์ด row์ผ ๋)
๊ต์ฐจ ์ถ์ ์๋ ํญ๋ชฉ์ ์ ๋ ฌ์ ์ ์ดํฉ๋๋ค. / ์ธ๋ก ์ ๋ ฌ์ ์ค์ ํ๋ค๋ ์๋ฏธ.
align-items: flex-start // ์์๋ค์ ์ปจํ
์ด๋์ ๊ผญ๋๊ธฐ๋ก ์ ๋ ฌํฉ๋๋ค.
align-items: flex-end // ์์๋ค์ ์ปจํ
์ด๋์ ๋ฐ๋ฅ์ผ๋ก ์ ๋ ฌํฉ๋๋ค.
align-items: center // ์์๋ค์ ์ปจํ
์ด๋์ ์ธ๋ก์ ์์ ๊ฐ์ด๋ฐ๋ก ์ ๋ ฌํฉ๋๋ค.
align-items: baseline // ์์๋ค์ ์ปจํ
์ด๋์ ์์ ์์น์ ์ ๋ ฌํฉ๋๋ค.
align-items: stretch // ์์๋ค์ ์ปจํ
์ด๋์ ๋ง๋๋ก ๋๋ฆฝ๋๋ค.
๋ถ๋ชจ์์๊ฐ ์๋ ๊ฐ๋ณ item์ ์ ์ฉํจ
align-self๋ align-item๊ณผ ๊ฐ์ด ๋์ํ๋ค.
๋ค์ ๋งํด ์ธ๋ก์ถ ๋ฐฉํฅ์ ์๋ item์ ์์น๋ฅผ ๋ฐ๊พธ๊ฒ ๋๋ค.
align-items์ align-self์ ์ฐจ์ด์
: align-items๋ flex container์ธ ๋ถ๋ชจ์์์ ์ ์ฉ,
: align-self๋ ์์items ์ค ํ item์ ๊ฐ๋ณ์ ์ผ๋ก ์ ์ฉํจ.
item์์ ๊ฐ๊ฐ์ ์์๋ฅผ ๋ฐ๊พผ๋ค.
(HTML์ ํตํด ์์๋ฅผ ๋ฐ๊พธ๊ธฐ ํ๋ค ๋ ์ฌ์ฉํ๋ฉด ์ข๋ค.)
๊ธฐ๋ณธ ๊ฐ์ 0
:order๋ฅผ 1(์์)๋ก ์ค ๊ฒฝ์ฐ, ํด๋น item์ด ์ ค ๋ค์ ์์นํ๊ฒ ๋๋ค.
:order๋ฅผ -1(์์)๋ก ์ค ๊ฒฝ์ฐ, ํด๋น item์ด ์ ค ์์ ์์นํ๊ฒ ๋๋ค.
flex-wrap :nowrap(๊ธฐ๋ณธ๊ฐ)
: item๋ค์ด ๋ชจ๋ ๊ฐ์ "ํ ์ค์" ์๋๋ก ์ ์งํจ.
๊ทธ๋์ ์ง์ ํ ๋๋น๊ฐ ๊นจ์ง๋๋ผ๋ ์ค์ฌ์ ๊ฐ๋ก์ ๋ ฌ ๋จ.
flex-wrap :wrap
: item๋ค์ ๋๋น๋ฅผ ์ ์งํ ์ฑ, ๋๋น๊ฐ ๊ฝ์ฐจ๋ฉด "๋ค๋ฅธ ์ค๋ก" ๋ฐ๋๊ฒ ๋จ.
flex-wrap :reverse
: flex-wrap์ ๋ฐ๋๋ก ํจ.
.container {
height: 300px;
display: flex;
flex-direction: column;
flex-wrap: wrap;
}
flex-direction๊ณผ flex-wrap์ด ์์ฃผ ๊ฐ์ด ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์, flex-flow๊ฐ ์ด๋ฅผ ํ๋ฒ์ ๋์ ํ ์ ์์.
์ด ์์ฑ์ ๊ณต๋ฐฑ๋ฌธ์๋ฅผ ์ด์ฉํ์ฌ ๋ ์์ฑ์ ๊ฐ๋ค์ ์ธ์๋ก ๋ฐ์.
์ฝ๋2
flex-direction์ flex-wrap์ ์ด์ฉํ ์ ๋ ฌ โ flex-flow๋ก ํ๋ฒ์ ์ฌ์ฉ๊ฐ๋ฅ.
(์์ ์ฝ๋1๊ณผ ์ฝ๋2๋ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์ด)
.container {
height: 300px;
display: flex;
flex-flow: column wrap;
}
line์ ๋ณ๊ฒฝํจ
: item๋ค์ด ์ฌ๋ฌ ํ์ ๊ฑธ์ณ ๋์ฌ ๋, ํ๊ฐ ๊ณต๋ฐฑ์ ์ผ๋ง๋ ๋ ๊ฑด์ง์ ๊ดํ ๊ฒ.
justify-content๋ ํ ํ์ ๋ํ ์ ๋ ฌ, align-content๋ ํ๊ฐ์ ๋ํ ์ ๋ ฌ์.
์ฌ์ฉ์ฝ๋
: ๋ ํ๊ฐ์ ์ฌ์ด๊ฐ ๋์์ ๋์ผ๋ก ๋ฉ์ด์ง๊ฒ ๋จ.
.container {
height: 600px;
display: flex;
flex-flow: row wrap;
align-content: space-between;
}
.box:nth-child(4) {
background-color: cadetblue;
flex-shrink: 2;
}
.box:nth-child(4) {
background-color: cadetblue;
flex-grow: 2;
}
.box {
flex-basis: 100px;
height: 200px;
background-color: rosybrown;
}
/*
1.ํฌ๊ธฐ๋ฅผ ์ง์ ์ง์
flex-basis: 10em;
flex-basis: 3px;
flex-basis: auto;
2.์๋ณธ ํฌ๊ธฐ ํค์๋
flex-basis: fill;
flex-basis: max-content;
flex-basis: min-content;
flex-basis: fit-content;
3.ํ๋ ์ค ์์ดํ
๋ด์ฉ ํฌ๊ธฐ์ ๋ฐ๋ผ ์กฐ์
flex-basis: content;
*
/* css */
#wrapper {
display: flex;
width: 400px;
}
.one {
background-color: blueviolet;
flex: 1;
}
.two {
background-color: rgb(217, 226, 43);
flex: 2;
}
.three {
background-color: rgb(34, 173, 34);
flex: 1;
}
/* html */
<div id="wrapper">
<div class="one">1</div>
<div class="two">2</div>
<div class="three">3</div>
</div>
โ 1:2:1๋ก ๋๋น๊ฐ ๋๋ ์ง
โ 1(100px) , 2(200px) , 3(100px)
โป grid์์๋ ๋ง์ฐฌ๊ฐ์ง์
1) column-gap: 10px; - ์ด๊ณผ ์ด ์ฌ์ด์ ๊ฐ๊ฒฉ
2) row-gap: 10px; - ํ๊ณผ ํ ์ฌ์ด์ ๊ฐ๊ฒฉ
3) gap: 10px; - ์ด๊ณผ์ด, ํ๊ณผํ ์ฌ์ด์ ๊ฐ๊ฒฉ ํ๋ฒ์ ์ค์