VII. ๋ฐ์ํ ์น๊ณผ ๋ฏธ๋์ด ์ฟผ๋ฆฌ - 4. ํ๋ ์ค ๋ฐ์ค ๋ ์ด์์ ์์๋ณด๊ธฐ
๋ฐ์ํ ์น ๋์์ธ์ ์ ํฉํ ๊ทธ๋ฆฌ๋ ๋ ์ด์์์ ๋ง๋๋ ๋ฐฉ๋ฒ ์ค ์ฒซ ๋ฒ์งธ์๋ ํ๋ ์ค ๋ฐ์ค ๋ ์ด์์์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์์๋ณด์.
ํ๋ ์ค ๋ฐ์ค ๋ ์ด์์์ ๋น๊ต์ ์ต๊ทผ์ ๋ฑ์ฅํ ๊ฐ๋ ์ผ๋ก, ๊ธฐ์กด์ CSS ์์ฑ ์ธ์ ์๋ก ๊ณต๋ถํด์ผ ํ ์์ฑ์ด ์๋ค.
ํ๋ ์ค ๋ฐ์ค ๋ ์ด์์์์ ์ฌ์ฉํ๋ ์ฉ์ด
ํ๋ ์ค ๋ฐ์ค ๋ ์ด์์(flex box layout)์ ๊ทธ๋ฆฌ๋ ๋ ์ด์์์ ๊ธฐ๋ณธ์ผ๋ก ํด์ ์๋ก ๋ฑ์ฅํ ๊ฐ๋ ์ด๋ฏ๋ก ์์ ๋์ด์ผ ํ ์๋ก์ด ์ฉ์ด๊ฐ ๋ง๋ค. ์ด์ ๋ถํฐ ๋ค์ ๊ทธ๋ฆผ์ ์ฐธ๊ณ ํด ํ๋ ์ค ๋ฐ์ค ๋ ์ด์์์์ ์ฌ์ฉํ๋ ์ฉ์ด๋ฅผ ์ดํด๋ณด์.
ํ๋ ์ค ๋ฐ์ค ํญ๋ชฉ์ ๋ฐฐ์นํ๋ ์์ฑ
ํ๋ ์ค ๋ฐ์ค์๋ ํ๋ ์ค ํญ๋ชฉ์ด ์ฌ๋ฌ ๊ฐ ์๋๋ฐ ์ผ๊ด์ ์ผ๋ก ํ๊บผ๋ฒ์ ๋ฐฐ์นํ ์๋ ์๊ณ , ์ฃผ์ถ์ด๋ ๊ต์ฐจ์ถ ๊ธฐ์ค์ผ๋ก ๋ค์ํ๊ฒ ๋ฐฐ์นํ ์๋ ์๋ค.
๋ฐฐ์น ๋ฐฉ๋ฒ๊ณผ ๊ด๋ จ๋ ์์ฑ์ด ๋ง์ผ๋ฏ๋ก ์ฒ์์๋ ํท๊ฐ๋ฆฌ๋๋ฐ ํ์ ๊ฐ์ด ๊ธฐ์ตํด๋๋ฉด ์ฝ๋ค.
์ข ๋ฅ | ์ค๋ช |
justify-content | ์ฃผ์ถ ๋ฐฉํฅ์ ์ ๋ ฌ ๋ฐฉ๋ฒ์ด๋ค |
align-items | ๊ต์ฐจ์ถ ๋ฐฉํฅ์ ์ ๋ ฌ ๋ฐฉ๋ฒ์ด๋ค. |
align-self | ๊ต์ฐจ์ถ์ ์๋ ๊ฐ๋ณ ํญ๋ชฉ์ ์ ๋ ฌ ๋ฐฉ๋ฒ์ด๋ค. |
align-content | ๊ต์ฐจ์ถ์์ ์ฌ๋ฌ ์ค๋ก ํ์๋ ํญ๋ชฉ์ ์ ๋ ฌ ๋ฐฉ๋ฒ์ด๋ค. |
ํ๋ ์ค ์ปจํ ์ด๋๋ฅผ ์ง์ ํ๋ display ์์ฑ
ํ๋ ์ค ๋ฐ์ค ๋ ์ด์์์ ๋ง๋ค๋ ค๋ฉด ๋จผ์ ์น ์ฝํ ์ธ ๋ฅผ ํ๋ ์ค ์ปจํ ์ด๋๋ก ๋ฌถ์ด ์ฃผ์ด์ผ ํ๋ค.
์ฆ, ๋ฐฐ์นํ ์น ์์๊ฐ ์๋ค๋ฉด ๊ทธ ์์๋ฅผ ๊ฐ์ธ๋ ๋ถ๋ชจ ์์๋ฅผ ๋ง๋ค๊ณ , ๊ทธ ๋ถ๋ชจ ์์๋ฅผ ํ๋ ์ค ์ปจํ ์ด๋๋ก ๋ง๋ค์ด์ผ ํ๋ค.
์ด๋ ํน์ ์์๊ฐ ํ๋ ์ค ์ปจํ ์ด๋๋ก ๋์ํ๋ ค๋ฉด display ์์ฑ์ ์ด์ฉํด ์ด ๋ถ๋ถ์ ํ๋ ์ค ๋ฐ์ค ๋ ์ด์์์ ์ ์ฉํ๊ฒ ๋ค๊ณ ์ง์ ํด์ผ ํ๋ค.
ํ๋ ์ค ์ปจํ ์ด๋๋ฅผ ์ง์ ํ๋ display์ ์์ฑ๊ฐ์ ๋ค์ ํ์ ๊ฐ๋ค.
์ข ๋ฅ | ์ค๋ช |
flex | ์ปจํ ์ด๋ ์์ ํ๋ ์ค ํญ๋ชฉ์ ๋ธ๋ก ๋ ๋ฒจ ์์๋ก ๋ฐฐ์นํ๋ค |
inline-flex | ์ปจํ ์ด๋ ์์ ํ๋ ์ค ํญ๋ชฉ์ ์ธ๋ผ์ธ ๋ ๋ฒจ ์์๋ก ๋ฐฐ์นํ๋ค. |
ํ๋ ์ค ๋ฐฉํฅ์ ์ง์ ํ๋ flex-direction ์์ฑ
ํ๋ ์ค ์ปจํ ์ด๋ ์์์ ํ๋ ์ค ํญ๋ชฉ์ ๋ฐฐ์นํ๋ ์ฃผ์ถ๊ณผ ๋ฐฉํฅ์ ์ง์ ํ๋ ์์ฑ์ด๋ค,
์ฌ์ฉํ ์ ์๋ ์์ฑ๊ฐ์ ๋ค์ ํ์ ๊ฐ๋ค.
์ข ๋ฅ | ์ค๋ช |
row | ์ฃผ์ถ์ ๊ฐ๋ก๋ก ์ง์ ํ๊ณ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ๋ฐฐ์นํ๋ค. ๊ธฐ๋ณธ๊ฐ. |
row-reverse | ์ฃผ์ถ์ ๊ฐ๋ก๋ก ์ง์ ํ๊ณ ๋ฐ๋๋ก ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ๋ฐฐ์นํ๋ค. |
column | ์ฃผ์ถ์ ์ธ๋ก๋ก ์ง์ ํ๊ณ ์์ชฝ์์ ์๋์ชฝ์ผ๋ก ๋ฐฐ์นํ๋ค |
column-reverse | ์ฃผ์ถ์ ์ธ๋ก๋ก ์ง์ ํ๊ณ ์๋์ชฝ์์ ์์ชฝ์ผ๋ก ๋ฐฐ์นํ๋ค. |
๋ค์์ 1, 2, 3์ด๋ผ๋ ์ซ์๊ฐ ์จ ์๋ ๋ฐ์ค 3๊ฐ๋ฅผ ํ๋ ์ค ์ปจํ ์ด๋๋ก ๋ฌถ๊ณ , ์ปจํ ์ด๋ ์์ ์๋ ํ๋ ์ค ํญ๋ชฉ์ ์ฌ๋ฌ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐฐ์นํ ๊ฒ์ด๋ค.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.container{ display: flex; border: solid 2px; margin:10px;}
#opt1 { flex-direction: row;}
#opt2 { flex-direction: row-reverse;}
#opt3 { flex-direction: column;}
#opt4 { flex-direction: column-reverse;}
.box{
width:100px;
height:40px;
margin:5px;
text-align: center;
background: black;
color: white;
}
</style>
</head>
<body>
<div class="container" id="opt1">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
</div>
<div class="container" id="opt2">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
</div>
<div class="container" id="opt3">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
</div>
<div class="container" id="opt4">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
</div>
</body>
</html>
ํ๋ ์ค ํญ๋ชฉ์ ์ค์ ๋ฐ๊พธ๋ flex-wrap ์์ฑ
flex-wrap ์์ฑ์ ํ๋ ์ค ์ปจํ ์ด๋ ๋๋น๋ณด๋ค ๋ง์ ํ๋ ์ค ํญ๋ชฉ์ด ์์ ๊ฒฝ์ฐ ์ค์ ๋ฐ๊ฟ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ค.
์์ฑ๊ฐ์ผ๋ก wrap์ด๋ wrap-reverse๋ก ์ง์ ํ ํ ์น ๋ธ๋ผ์ฐ์ ํ๋ฉด์ ๋๋น๋ฅผ ๋๋ฆฌ๊ฑฐ๋ ์ค์ฌ ๋ณด๋ฉด ํ๋ ์ค ์ปจํ ์ด๋์ ๋๋น์ ๋ฐ๋ผ ์ฌ๋ฌ ์ค๋ก ํ์๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
flex-wrap์์ ์ฌ์ฉํ ์ ์๋ ์์ฑ๊ฐ์ ๋ค์๊ณผ ๊ฐ๋ค.
์ข ๋ฅ | ์ค๋ช |
nowrap | ํ๋ ์ค ํญ๋ชฉ์ ํ ์ค์ ํ์ํ๋ค. ๊ธฐ๋ณธ๊ฐ |
wrap | ํ๋ ์ค ํญ๋ชฉ์ ์ฌ๋ฌ ์ค์ ํ์ํ๋ค. |
wrap-reverse | ํ๋ ์ค ํญ๋ชฉ์ ์ฌ๋ฃจ ์ค์ ํ์ํ๋, ์์์ ๊ณผ ๋์ ์ด ๋ฐ๋๋ค. |
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.container{ display: flex; border: solid 2px; margin:10px;}
.imageblock {border: solid 1px;}
#opt1 {flex-wrap: nowrap;}
#opt2 {flex-wrap: wrap;}
#opt3 {flex-wrap: wrap-reverse;}
.box{
width:100px;
height:40px;
margin:5px;
text-align: center;
background: black;
color: white;
}
</style>
</head>
<body>
<div class="container" id="opt1">
<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>
<div class="container" id="opt2">
<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>
<div class="container" id="opt3">
<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>
</body>
</html>
๋ฐฐ์น ๋ฐฉํฅ๊ณผ ์ค ๋ฐ๊ฟ์ ํ๊บผ๋ฒ์ ์ง์ ํ๋ flex-flow ์์ฑ
flex-flow์์ฑ์ flex-direction ์์ฑ๊ณผ flex-wrap ์์ฑ์ ํ๊บผ๋ฒ์ ์ง์ ํ์ฌ ํ๋ ์ค ํญ๋ชฉ์ ๋ฐฐ์น ๋ฐฉํฅ์ ๊ฒฐ์ ํ๊ฑฐ๋ ์ค์ ๋ฐ๊พผ๋ค.
๊ธฐ๋ณธ๊ฐ์ row nowrap์ด๋ค.
์์๋ ๋ค์๊ณผ ๊ฐ๋ค.
#opt1 {flex-flow: row wrap;}
#opt2 {flex-flow: row nowrap;}
์ฃผ์ถ ์ ๋ ฌ ๋ฐฉ๋ฒ์ ์ง์ ํ๋ justify-content ์์ฑ
justify-content ์์ฑ์ ์ฃผ์ถ์์ ํ๋ ์ค ํญ๋ชฉ ๊ฐ์ ์ ๋ ฌ ๋ฐฉ๋ฒ์ ์ง์ ํ๋ค. ์ฌ์ฉํ ์ ์๋ justify-content์ ์์ฑ๊ฐ์ ๋ค์ ํ์ ๊ฐ๋ค.
์ข ๋ฅ | ์ค๋ช |
flex-start | ์ฃผ์ถ์ ์์์ ์ ๋ง์ถฐ ๋ฐฐ์นํ๋ค. |
flex-end | ์ฃผ์ถ์ ๋์ ์ ๋ง์ถฐ ๋ฐฐ์นํ๋ค |
center | ์ฃผ์ถ์ ์ค์์ ๋ง์ถฐ ๋ฐฐ์นํ๋ค |
space-between | ์ฒซ ๋ฒ์งธ ํญ๋ชฉ๊ณผ ๋ ํญ๋ชฉ์ ์ฃผ์ถ์ ์์์ ๊ณผ ๋์ ์ ๋ฐฐ์นํ ํ ๋๋จธ์ง ํญ๋ชฉ์ ๊ทธ ์ฌ์ด์ ๊ฐ์ ๊ฐ๊ฒฉ์ผ๋ก ๋ฐฐ์นํ๋ค. |
space-around | ๋ชจ๋ ํญ๋ชฉ์ ์ฃผ์ถ์ ๊ฐ์ ๊ฐ๊ฒฉ์ผ๋ก ๋ฐฐ์นํ๋ค. |
์์๋ฅผ ๋ณด๋๊ฒ ํจ์ฌ ์ดํด๊ฐ ์ ๋ ๊ฒ์ด๋ค.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.container{ display: flex; border: solid 2px; margin:10px;}
.imageblock {border: solid 1px;}
#opt1 {justify-content: flex-start;}
#opt2 {justify-content: flex-end;}
#opt3 {justify-content: center;}
#opt4 {justify-content: space-between;}
#opt5 {justify-content: space-around;}
#opt6 {justify-content: space-evenly;}
.box{
width:100px;
height:40px;
margin:5px;
text-align: center;
background: black;
color: white;
}
</style>
</head>
<body>
<div class="container" id="opt1">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
</div>
<div class="container" id="opt2">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
</div>
<div class="container" id="opt3">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
</div>
<div class="container" id="opt4">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
</div>
<div class="container" id="opt5">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
</div>
<div class="container" id="opt6">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
</div>
</body>
</html>
๊ต์ฐจ์ถ ์ ๋ ฌ ๋ฐฉ๋ฒ์ ์ง์ ํ๋ align-items ์์ฑ
justify-content ์์ฑ์ด ์ฃผ์ถ์์ ํญ๋ชฉ์ ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ์ด๋ผ๋ฉด align-items์์ฑ์ ๊ต์ฐจ์ถ์ ๊ธฐ์ค์ผ๋ก ํ๋ ์ค ํญ๋ชฉ์ผ ์ ๋ ฌํ๋ค.
align-items์ ์์ฑ๊ฐ์ ๋ค์ ํ์ ๊ฐ๋ค.
์ข ๋ฅ | ์ค๋ช |
flex-start | ๊ต์ฐจ์ถ์ ์์์ ์ ๋ง์ถฐ ๋ฐฐ์นํ๋ค. |
flex-end | ๊ต์ฐจ์ถ์ ๋์ ์ ๋ง์ถฐ ๋ฐฐ์นํ๋ค. |
center | ๊ต์ฐจ์ถ์ ์ค์์ ๋ฐฐ์นํ๋ค |
baseline | ๊ต์ฐจ์ถ์ ๋ฌธ์ ๊ธฐ์ค์ ์ ๋ง์ถฐ ๋ฐฐ์นํ๋ค |
stretch | ํ๋ ์ค ํญ๋ชฉ์ ๋๋ ค ๊ต์ฐจ์ถ์ ๊ฐ๋ ์ฐจ๊ฒ ๋ฐฐ์นํ๋ค |
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.container{ display: flex; border: solid 2px; margin:10px; height: 150px;}
.imageblock {border: solid 1px;}
.box{
padding: 10px 40px;
margin:5px;
text-align: center;
background: black;
color: white;
}
#opt1 {align-items: flex-start;}
#opt2 {align-items: flex-end;}
#opt3 {align-items: center;}
#opt4 {align-items: baseline;}
#opt5 {align-items: stretch;}
</style>
</head>
<body>
<div class="container" id="opt1">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
</div>
<div class="container" id="opt2">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
</div>
<div class="container" id="opt3">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
</div>
<div class="container" id="opt4">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
</div>
<div class="container" id="opt5">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
</div>
</body>
</html>
ํน์ ํญ๋ชฉ๋ง ์ ๋ ฌ ๋ฐฉ๋ฒ์ ์ง์ ํ๋ aling-self ์์ฑ
align-item ์์ฑ์ ๊ต์ฐจ์ถ์ ๊ธฐ์ค์ผ๋ก ํ๋ ์ค ํญ๋ชฉ์ ์ ๋ ฌ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํ์ง๋ง ๊ทธ์ค์์ ํน์ ํญ๋ชฉ๋ง ์ง์ ํ๊ณ ์ถ๋ค๋ฉด align-self ์์ฑ์ ์ฌ์ฉํ๋ค.
๊ทธ๋์ align-item ์์ฑ์ ํ๋ ๊ธ ์ปจํ ์ด๋๋ฅผ ์ง์ ํ๋ ์ ํ์์์ ์ฌ์ฉํ์ง๋ง align-self ์์ฑ์ ํ๋ ์ค ํญ๋ชฉ ์ ํ์์์ ์ฌ์ฉํ๋ค.
align-self ์์ฑ์์ ์ฌ์ฉํ๋ ๊ฐ์ align-items ์์ฑ์์ ์ฌ์ฉํ๋ ๊ฐ๊ณผ ๊ฐ๋ค.
๋ค์ ์์ ๋ฅผ ๋ณด๋ฉด ํ๋ ์ค ์ปจํ ์ด๋(.container)์์ ๊ต์ฐจ์ถ์ ํ๋ ์ค ํญ๋ชฉ๋ค์ ์ค์์ ๋ฐฐ์นํ๋ค.
ํ์ง๋ง 1๋ฒ ์์(#box1)๋ ๋ณ๋๋ก ๊ต์ฐจ์ถ์ ์์์ ์๋ฐฐ์นํ๊ณ 3๋ฒ ์์(#box3)๋ ๊ต์ฐจ์ถ์ ๊ฐ๋ ์ฐจ๋๋ก ๋๋ ธ๋ค.
2๋ฒ, 4๋ฒ ์์๋ ์์ฑ๊ฐ์ ๋ฐ๋ก ์ง์ ํ์ง ์์๋ค.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.container{ display: flex; border: solid 2px; margin:10px; height: 150px;}
.imageblock {border: solid 1px;}
.box{
padding: 10px 40px;
margin:5px;
text-align: center;
background: black;
color: white;
}
#opt1 {align-items: center;}
#box1 {align-self:flex-start;}
#box3 {align-self:stretch;}
</style>
</head>
<body>
<div class="container" id="opt1">
<div class="box" id="box1">1</div>
<div class="box">2</div>
<div class="box" id="box3">3</div>
<div class="box">4</div>
</div>
</div>
</body>
</html>
์ฌ๋ฌ ์ค์ผ ๋ ๊ต์ฐจ์ถ ์ ๋ ฌ ๋ฐฉ๋ฒ์ ์ง์ ํ๋ align-content ์์ฑ
์ฃผ์ถ์์ ์ค ๋ฐ๊ฟ์ด ์๊ฒจ์ ํ๋ ์ค ํญ๋ชฉ์ ์ฌ๋ฌ ์ค๋ก ํ์ํ ๋ align-content ์์ฑ์ ์ฌ์ฉํ๋ฉด ๊ต์ฐจ์ถ์์ ํ๋ ์ค ํญ๋ชฉ ๊ฐ์ ๊ฐ๊ฒฉ์ ์ง์ ํ ์ ์๋ค.
์ข ๋ฅ | ์ค๋ช |
flex-start | ๊ต์ฐจ์ถ์ ์์์ ์ ๋ง์ถฐ ๋ฐฐ์นํ๋ค. |
flex-end | ๊ต์ฐจ์ถ์ ๋์ ์ ๋ง์ถฐ ๋ฐฐ์นํ๋ค. |
center | ๊ต์ฐจ์ถ์ ์ค์์ ๋ง์ถฐ ๋ฐฐ์นํ๋ค. |
space-between | ์ฒซ ๋ฒ์งธ ํญ๋ชฉ๊ณผ ๋ ํญ๋ชฉ์ ๊ต์ฐจ์ ์ ์์์ ๊ณผ ๋์ ์ ๋ง์ถ๊ณ ๋๋จธ์ง ํญ๋ชฉ์ ๊ทธ ์ฌ์ด์ ๊ฐ์ ๊ฐ๊ฒฉ์ผ๋ก ๋ฐฐ์น |
space-around | ๋ชจ๋ ํญ๋ชฉ์ ๊ต์ฐจ์ถ์ ๊ฐ์ ๊ฐ๊ฒฉ์ผ๋ก ๋ฐฐ์น |
stretch | ํ๋ ์ค ํญ๋ชฉ์ ๋๋ ค์ ๊ต์ฐจ์ถ์ ๊ฐ๋ ์ฐจ๊ฒ ๋ฐฐ์น |
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.container{
display: flex;
border: solid 2px;
margin:10px;
height: 150px;
flex-flow: row wrap;
}
.imageblock {border: solid 1px;}
.box{
padding: 10px 55px;
margin:5px;
text-align: center;
background: black;
color: white;
}
#opt1 {align-content: flex-start;}
#opt2 {align-content: flex-end;}
#opt3 {align-content: center;}
#opt4 {align-content: space-between;}
#opt5 {align-content: space-around;}
#opt6 {align-content: stretch;}
</style>
</head>
<body>
<div class="container" id="opt1">
<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>
<div class="container" id="opt2">
<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>
<div class="container" id="opt3">
<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>
<div class="container" id="opt4">
<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>
<div class="container" id="opt5">
<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>
<div class="container" id="opt6">
<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>
</body>
</html>
ํ๋ ์ค ๋ ์ด์์์ ํ์ฉํด ํญ์ ์ค์์ ํ์ํ๊ธฐ
๊ทธ๋์ CSS๋ฅผ ์ฌ์ฉํด์ ํ๋ฉด ์์๋ฅผ ์ธ๋ก ๋ฐฉํฅ์ผ๋ก ์ค์์ ๋ฐฐ์นํ๋ ๊ฒ์ด ๊น๋ค๋ก์ ๋๋ฐ ํ๋ ์ค ๋ฐ์ค ๋ ์ด์์์ ์ฌ์ฉํ๋ฉด ๊ฐ๋จํด์ง๋ค.
์ด์ ์์๋ฅผ ํ๋ฉด ์ค์์ ๋ฐฐ์นํ๋ ค๋ฉด
"ํ๋ฉด ์ค์์ ๋ฐฐ์นํ ์์"์ ๋ถ๋ชจ ์์์ display:flex ์์ฑ์ ๋ถ์ฌํ๊ณ
ํ๋ฉด ์ค์์ ๋ฐฐ์นํ ์์์ justify-conetne: center; align-items: center; ์์ฑ์ ๋ถ์ฌํ๋ฉด
์์๊ฐ ํ๋ฉด ์ค์์ ๋ฐฐ์น๋๋ค.
Flex ์์ดํ ์ ํฌ๊ธฐ๋ฅผ ์ ์ดํ๋ flex-basis, flex-grow, flex-shrink, ๊ทธ๋ฆฌ๊ณ flex
flex-bases
Flex ์์ดํ ์ ๊ธฐ๋ณธ ํฌ๊ธฐ๋ฅผ ์ค์ ํ๋ค.
(flex-direction์ด row์ผ ๋๋ ๋๋น, column์ผ ๋๋ ๋์ด)
.item {
flex-basis: auto; /* ๊ธฐ๋ณธ๊ฐ */
/* flex-basis: 0; */
/* flex-basis: 50%; */
/* flex-basis: 300px; */
/* flex-basis: 10rem; */
/* flex-basis: content; */
}
๊ธฐ๋ณธ๊ฐ์ ํด๋น ์์ดํ ์ ์๋ ํฌ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ค.
์ฐ๋ฆฌ๊ฐ ํน๋ณํ ์ง์ ํ๊ณ ์ถ๋ค๋ฉด ์ง์ ํด์ฃผ๋ฉด๋๋ค.
flex-grow
flex-grow๋ ์์ดํ ์ด flex-basis์ ๊ฐ๋ณด๋ค ์ปค์ง ์ ์๋์ง๋ฅผ ๊ฒฐ์ ํ๋ ์์ฑ์ด๋ค.
flex-grow์๋ ์ซ์๊ฐ์ด ๋ค์ด๊ฐ๋๋ฐ, ๋ช์ด๋ ์ผ๋จ 0๋ณด๋ค ํฐ ๊ฐ์ด ์ธํ ์ด ๋๋ฉด ํด๋น ์์ดํ ์ด ํ์ฅ๊ฐ๋ฅํ ๋ฐ์ค๋ก ๋ณํ๊ณ , ์๋์ ํฌ๊ธฐ๋ณด๋ค ์ปค์ง๋ฉฐ ๋น ๊ณต๊ฐ์ ๋ฉ์ฐ๊ฒ ๋๋ค.
๊ธฐ๋ณธ๊ฐ์ 0์ด๊ธฐ์, ๋ฐ๋ก ์ ์ฉํ๊ธฐ ์ ๊น์ง๋ container์ ๊ณต๊ฐ์ด ๋จ์๋ ์์ดํ ์ด ๋์ด๋์ง ์๋๋ค.
.item {
flex-grow: 1;
/* flex-grow: 0; */ /* ๊ธฐ๋ณธ๊ฐ */
}
flex-grow์ ๋ค์ด๊ฐ๋ ์ซ์์ ์๋ฏธ๋, ์์ดํ ๋ค์ flex-basis๋ฅผ ์ ์ธํ ์ฌ๋ฐฑ ๋ถ๋ถ์ ๊ฐ ์์ดํ ๋ค์ด flex-grow์ ์ง์ ๋ ์ซ์์ ๋น์จ๋ก ๋๋์ด ๊ฐ์ง๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
flex-shrink
์์ดํ ์ด flex-basis์ ๊ฐ๋ณด๋ค ์์์ง ์ ์๋์ง๋ฅผ ๊ฒฐ์ ํ๋ ์์ฑ์ด๋ค.
์ซ์์ ์๋ฏธ๋ flex-grow์ ๊ฐ๋ค.
๋ค๋ง ๊ธฐ๋ณธ๊ฐ์ด 1์ด๊ธฐ ๋๋ฌธ์ ์ธํ ํ์ง ์์์ด๋ ์์ดํ ์ด flex-basis๋ณด๋ค ์์์ง ์ ์๋ค.
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; */
}