๐Ÿ“Web Developing/CSS ๊ธฐ์ดˆ

VII. ๋ฐ˜์‘ํ˜• ์›น๊ณผ ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ - 4. ํ”Œ๋ ‰์Šค ๋ฐ•์Šค ๋ ˆ์ด์•„์›ƒ ์•Œ์•„๋ณด๊ธฐ

Hush 2022. 6. 13. 20:31

๋ฐ˜์‘ํ˜• ์›น ๋””์ž์ธ์— ์ ํ•ฉํ•œ ๊ทธ๋ฆฌ๋“œ ๋ ˆ์ด์•„์›ƒ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ• ์ค‘ ์ฒซ ๋ฒˆ์งธ์˜€๋˜ ํ”Œ๋ ‰์Šค ๋ฐ•์Šค ๋ ˆ์ด์•„์›ƒ์„ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์•Œ์•„๋ณด์ž.

ํ”Œ๋ ‰์Šค ๋ฐ•์Šค ๋ ˆ์ด์•„์›ƒ์€ ๋น„๊ต์  ์ตœ๊ทผ์— ๋“ฑ์žฅํ•œ ๊ฐœ๋…์œผ๋กœ, ๊ธฐ์กด์˜ 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; */
}