VII. ๋ฐ์ํ ์น๊ณผ ๋ฏธ๋์ด ์ฟผ๋ฆฌ - 5. CSS ๊ทธ๋ฆฌ๋ ๋ ์ด์์ ์ฌ์ฉํ๊ธฐ
์น ๋์์ธ ๋ ์ด์์์ ๋ง๋ค ๋ ๊ทธ๋ฆฌ๋ ๋ ์ด์์์ ์์ฃผ ์ค์ํ๋ค.
์น ์ฌ์ดํธ๋ฅผ ์ ์ํ ๋ ๊ณ ๋ คํด์ผ ํ ๊ธฐ๊ธฐ๊ฐ ๋๋ ์ด ๋์ด๋๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์์ค๋ฅผ ์ต๋ํ ๊ฐ๋จํ๊ฒ ์ ์งํ๋ฉด์ ๋๋ถ๋ถ์ ๊ธฐ๊ธฐ์ ๋์ํ ์ ์๋ ๊ทธ๋ฆฌ๋ ๋ ์ด์์ ๊ธฐ๋ฒ์ด ๋ฐ๋ก CSS ๊ทธ๋ฆฌ๋ ๋ ์ด์์์ด๋ค.
CSS ๊ทธ๋ฆฌ๋ ๋ ์ด์์์์ ์ฌ์ฉํ๋ ์ฉ์ด
ํ๋ ์ค ๋ฐ์ค ๋ ์ด์์์์๋ ํ๋ ์ค ํญ๋ชฉ์ ๋ฐฐ์นํ ๋ ๊ฐ๋ก๋ ์ธ๋ก ์ค์์ ํ๋๋ฅผ ์ฃผ์ถ์ผ๋ก ์ ํด ๋๊ณ ๋ฐฐ์นํ๋ค.
๋ฐ๋ฉด์ CSS ๊ทธ๋ฆฌ๋ ๋ ์ด์์์์๋ ๊ทธ๋ฆฌ๋ ํญ๋ชฉ์ ๋ฐฐ์นํ ๋ ๊ฐ๋ก์ ์ธ๋ก๋ฅผ ๋ชจ๋ ์ฌ์ฉํ๋ค.
๊ทธ๋์ ํ๋ ์ค ํญ๋ชฉ์ 1์ฐจ์์ด๊ณ CSS ๊ทธ๋ฆฌ๋ ๋ ์ด์์์ 2์ฐจ์์ด๋ผ๊ณ ๋งํ๋ค.
CSS๊ทธ๋ฆฌ๋ ๋ ์ด์์์ ๊ฐ๋ก ๋ฐฉํฅ์ ๊ฐ๋ฆฌํค๋ ์ค(row)๊ณผ ์ธ๋ก ๋ฐฉํฅ์ ๊ฐ๋ฆฌํค๋ ์นผ๋ผ(column)์ผ๋ก ์น ํ๋ฉด์ ๊ตฌ์ฑํ๋ค.
๊ทธ๋ฆฌ๊ณ ์นผ๋ผ๊ณผ ์นผ๋ผ ์ฌ์ด, ์ค๊ณผ ์ค ์ฌ์ด์ ๊ฐ๊ฒฉ์ ์ง์ ํด์ ์ํ๋ ํํ์ ๋ ์ด์์์ ๋ง๋ ๋ค.
CSS ๊ทธ๋ฆฌ๋ ๋ ์ด์์ ํญ๋ชฉ์ ๋ฐฐ์นํ๋ ์์ฑ
CSS๊ทธ๋ฆฌ๋ ๋ ์ด์์์ ๊ฐ์ฅ ์ต๊ทผ์ ์ ์๋ ๊ทธ๋ฆฌ๋ ๋ ์ด์์ ์ ์ ๋ฐฉ๋ฒ์ด๋ค.
CSS๊ทธ๋ฆฌ๋ ๋ ์ด์์์ ๋ง๋ค ๋ ์ฌ์ฉํ๋ ์์ฑ์ ํ๋ํ๋ ์ดํด๋ณด๊ฒ ๋ค.
๊ทธ๋ฆฌ๋ ์ปจํ ์ด๋๋ฅผ ์ง์ ํ๋ display ์์ฑ
๊ทธ๋ฆฌ๋ ๋ ์ด์์์ ์ง์ ํ ๋์๋ ๊ฐ์ฅ ๋จผ์ ๊ทธ๋ฆฌ๋๋ฅผ ์ ์ฉํ ์์์ ๋ฐ๊นฅ ๋ถ๋ถ์ ๊ทธ๋ฆฌ๋ ์ปจํ ์ด๋๋ก ๋ง๋ค์ด์ผ ํ๋ค.
๊ทธ๋ฆฌ๋ ์ปจํ ์ด๋๋ฅผ ๋ง๋ค ๋์๋ display ์์ฑ์ grid๋ inline-gird๋ก ์ง์ ํ๋ค.
์ข ๋ฅ | ์ค๋ช |
grid | ์ปจํ ์ด๋ ์์ ํญ๋ชฉ์ ๋ธ๋ก ๋ ๋ฒจ ์์๋ก ๋ฐฐ์นํ๋ค. |
inline-grid | ์ปจํ ์ด๋ ์์ ํญ๋ชฉ์ ์ธ๋ผ์ธ ๋ ๋ฒจ ์์๋ก ๋ฐฐ์นํ๋ค. |
์นผ๋ผ๊ณผ ์ค์ ์ง์ ํ๋ grid-template-columns, grid-template-rows ์์ฑ
๊ทธ๋ฆฌ๋ ์ปจํ ์ด๋ ์์ ํญ๋ชฉ์ ๋ฐฐ์นํ ๋ ์นด๋ผ๊ณผ ์ค์ ํฌ๊ธฐ์ ๊ฐ์๋ฅผ ์ง์ ํ๋ ค๋ฉด ์ด ๋ ์์ฑ์ ์ฌ์ฉํ๋ค.
grid-template-columns ์์ฑ์ ๊ทธ๋ฆฌ๋ ์ปจํ ์ด๋ ์์ ํญ๋ชฉ์ ๋ช ๊ฐ์ ์นผ๋ผ์ผ๋ก ๋ฐฐ์นํ ์ง, ๊ฐ ์นผ๋ผ์ ๋๋น๋ฅผ ์ผ๋ง๋ก ํ ์ง ์ง์ ํ๋ค.
๋ค์์ .items ์์๋ฅผ ๊ทธ๋ฆฌ๋ ๋ ์ด์์์ผ๋ก ๋ฐฐ์นํ๊ธฐ ์ํด ๊ทธ ๋ฐ๊นฅ์ ๊ฐ์ธ๋ #wrapper ์์๋ฅผ ๊ทธ๋ฆฌ๋ ์ปจํ ์ด๋๋ก ์ง์ ํ ์์ ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ๋๋น๋ฅผ 200px์ธ ์นผ๋ผ 3๊ฐ๋ก ๋ฐฐ์นํ๋ค.
์ฌ๋ฌ ์ค์ด ๋ ๊ฒฝ์ฐ ์ค ๋์ด๋ 100px๋ก ์ง์ ํ๋ค.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>CSS Grid Layout</title>
<style>
#wrapper{
display:grid;
grid-template-columns: 200px 200px 200px;
grid-template-rows:100px;
}
.items{
padding:10px;
background-color:#eee;
}
.items:nth-child(odd){
background-color:#bbb;
}
</style>
</head>
<body>
<div id="wrapper">
<div class="items">Lorem ipsum dolor sit amet consectetur adipisicing elit. Amet, reprehenderit.Lorem ipsum dolor, sit amet consectetur adipisicing elit. </div>
<div class="items">Lorem ipsum dolor, sit amet consectetur adipisicing elit.Lorem ipsum dolor, sit amet consectetur adipisicing elit</div>
<div class="items">Lorem ipsum dolor sit amet.Lorem ipsum dolor, sit amet consectetur adipisicing elit</div>
<div class="items">Lorem ipsum dolor sit.Lorem ipsum dolor, sit amet consectetur adipisicing elit</div>
<div class="items">Lorem, ipsum dolor.</div>
</div>
</body>
</html>
์๋์ ์ธ ํฌ๊ธฐ๋ฅผ ์ง์ ํ๋ fr๋จ์
๊ทธ๋ฆฌ๋ ๋ ์ด์์์์ ์นผ๋ผ์ด๋ ์ค์ ํฌ๊ธฐ๋ฅผ ์ง์ ํ ๋ ํฝ์ (px)์ ์ด์ฉํ๋ฉด ํญ์ ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋๋ฏ๋ก ๋ฐ์ํ ์น ๋์์ธ์๋ ์ ํฉํ์ง ์๋ค.
๊ทธ๋์ ๊ทธ๋ฆฌ๋ ๋ ์ด์์์์๋ ์๋์ ์ธ ํฌ๊ธฐ๋ฅผ ์ง์ ํ ์ ์๋๋ก fr(fraction) ๋จ์๋ฅผ ์ฌ์ฉํ๋ค.
์๋ฅผ ๋ค์ด ๋๋น๊ฐ ๊ฐ์ ์นผ๋ผ์ 3๊ฐ ๋ฐฐ์นํ๋ค๋ฉด fr ๋จ์๋ฅผ ์ฌ์ฉํด ๋ค์๊ณผ ๊ฐ์ด ์ง์ ํ๋ค.
grid-template-columns: 1fr 1fr 1fr;
๋๋ ์นผ๋ผ์ 2:1:2 ๋ก ๋ฐฐ์นํ๊ณ ์ถ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ง์ ํ๋ค.
grid-template-columns: 2fr 1fr 2fr;
๊ฐ์ด ๋ฐ๋ณต๋ ๋ ์ค์ฌ์ ํํํ ์ ์๋ repeat()ํจ์
px์ด๋ fr ๋จ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋๊ฐ์ ๊ฐ์ ์ฌ๋ฌ๋ฒ ๋ฐ๋ณตํด์ผ ํ๋ค.
CSS ๊ทธ๋ฆฌ๋ ๋ ์ด์์์๋ ๋ด์ฅ๋ repeat()์ด๋ผ๋ ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ๋ณตํ์ง ์๊ณ ๊ฐ๋จํ๊ฒ ํํํ ์ ์๋ค.
์๋ฅผ ๋ค์ด ๋๋น๊ฐ ๊ฐ์ ์นผ๋ผ์ 3๊ฐ ๋ฐฐ์นํ๋ ค๋ฉด 1fr์ 3๋ฒ ์ฌ์ฉํ๋๋ฐ, repeat() ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๊ฐ๋จํ๊ฒ ์์ฑํ ์ ์๋ค.
grid-template-columns: 1fr 1fr 1fr;
grid-template-columns: repeat(3,1fr);
์ต์๊ฐ๊ณผ ์ต๋๊ฐ์ ์ง์ ํ๋ minmax() ํจ์
์์์ ์ดํด๋ณธ ์์ ์์๋ ์ค ๋์ด๋ฅผ 100px๋ก ์ง์ ํ๋ค.
๊ทธ๋์ ์ค ๋์ด๋ณด๋ค ๋ด์ฉ์ด ๋ ๋ง์ผ๋ฉด ๋ณด์ด์ง ์์๋ค.
์ด๋ด๋ minmax() ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ค ๋์ด๋ฅผ ๊ณ ์ ํ์ง ์๊ณ ์ต์๊ฐ๊ณผ ์ต๋๊ฐ์ ์ฌ์ฉํด์ ์ ์ฐํ๊ฒ ์ง์ ํ ์ ์๋ค.
๋ค์ ์์ ๋ ๋๋น๊ฐ ๊ฐ์ ์นผ๋ผ 3๊ฐ๋ฅผ ๋ฐ๋ณตํ๋๋ฐ, ์นผ๋ผ์ ๋๋น๋ ๊ทธ๋ฆฌ๋ ์ปจํ ์ด๋์ ๋๋น์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ค.
๊ทธ๋ฆฌ๊ณ ์ค ๋์ด๋ ์ต์ 100px๋ก ์ง์ ํ๊ณ , ๋ด์ฉ์ด ๋ง์๋ ๋ค ํ์ํ ์ ์์ ๋งํผ ๋์ด๊ฐ ๋์ด๋๋ค.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>CSS Grid Layout</title>
<style>
#wrapper{
width:600px;
display:grid;
grid-template-columns: repeat(3,1fr);
grid-template-rows:minmax(100px,auto);
}
.items{
padding:10px;
background-color:#eee;
}
.items:nth-child(odd){
background-color:#bbb;
}
</style>
</head>
<body>
<div id="wrapper">
<div class="items">Lorem ipsum dolor sit amet consectetur adipisicing elit. Amet, reprehenderit.Lorem ipsum dolor, sit amet consectetur adipisicing elit. </div>
<div class="items">Lorem ipsum dolor, sit amet consectetur adipisicing elit.Lorem ipsum dolor, sit amet consectetur adipisicing elit</div>
<div class="items">Lorem ipsum dolor sit amet.Lorem ipsum dolor, sit amet consectetur adipisicing elit</div>
<div class="items">Lorem ipsum dolor sit.Lorem ipsum dolor, sit amet consectetur adipisicing elit</div>
<div class="items">Lorem, ipsum dolor.</div>
</div>
</body>
</html>
์๋์ผ๋ก ์นผ๋ผ ๊ฐ์๋ฅผ ์กฐ์ ํ๋ auto-fill, auto-fit ๊ฐ
์์์ repeat() ํจ์๋ฅผ ์ฌ์ฉํด์ ํฌ๊ธฐ๊ฐ ๊ฐ์ ์นผ๋ผ์ ๋ฐ๋ณตํ ๋๋ ๋ค์๊ณผ ๊ฐ์ด ์นผ๋ผ์ ๊ฐ์๋ฅผ ์ง์ ํ๋ค.
grid-template-columns: repeat(3, 1fr);
์ด๋ ์นผ๋ผ์ ๋๋น๊ฐ๊ณผ ํจ๊ป auto-fit์ด๋ auto-fill์ ์ง์ ํ๋ฉด ํ๋ฉด ๋๋น์ ๋ฐ๋ผ ์นผ๋ผ ๊ฐ์๋ฅผ ์กฐ์ ํ ์ ์๋ค.
์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ด ๋๋น๊ฐ 200px์ธ ์นผ๋ผ์ ํ๋ฉด ๋๋น์ ๊ฐ๋ ์ฐฐ๋๊น์ง ๋ฐฐ์นํ๋ค.
grid-template-columns: repeat(auto-fit, 200px);
auto-fit์ด๋ auto-fill ๋ชจ๋ ์นผ๋ผ ๊ฐ์๋ฅผ ์๋์ผ๋ก ์กฐ์ ํด ์ฃผ๋ฏ๋ก ํ๋ฉด์ด ๋์ด์ง๋ฉด ์นผ๋ผ ๊ฐ์๊ฐ ๋ง์์ง๊ณ ๋ฐ๋๋ก ํ๋ฉด์ด ์ข์์ง๋ฉด ์นผ๋ผ ๊ฐ์๊ฐ ์ค์ด๋ ๋ค.
๋ ๊ฐ์ ์ฐจ์ด์ ์ ๋จ๋ ๊ณต๊ฐ์ ์ฑ์ธ์ง ๋ง์ง์ฌ๋ถ์ ๋ฌ๋ ค์๋ค.
auto-fit์ ํ๋ฉด์ด ์ต์๋๋น ์ด์์ผ๋ก ๋จ๋๋ผ๋ column์ ๋ ๋ฃ์ง ์๊ณ ๊ธฐ์กด ์ปจํ ์ธ ๋ฅผ ๋ํ ํ๋ฉด์ ๊ฝ ์ฑ์ฐ์ง๋ง
auto-fill์ ์ฌ์ฉํ๋ฉด ์ต์ ๋๋น ์ด์์ ๊ณต๊ฐ์ด ๋จ์ผ๋ฉด ๋น column์ ์์ฑํ๋ค.
๊ทธ๋ฆฌ๋ ํญ๋ชฉ์ ๊ฐ๊ฒฉ์ ์ง์ ํ๋ column-gap, row-gap, gap ์์ฑ
์ง๊ธ๊น์ง ์ดํด๋ณธ ์์ ์ฒ๋ผ ๊ธฐ๋ณธ์ผ๋ก ๋ง๋ค์ด์ง๋ ๊ทธ๋ฆฌ๋ ๋ ์ด์์์ ํญ๋ชฉ์ด ์๋ก ๋ถ์ด ์๋ค.
์ด๋ ํญ๋ชฉ๊ณผ ํญ๋ชฉ ์ฌ์ด์ ๊ฐ๊ฒฉ์ ์กฐ์ ํ๋ ค๋ฉด ๋ค์ ํ์ ๊ฐ์ ์์ฑ์ ์ฌ์ฉํ๋ค.
์ข ๋ฅ | ์ค๋ช |
column-gap | ์นผ๋ผ๊ณผ ์นผ๋ผ ์ฌ์ด์ ๊ฐ๊ฒฉ์ ์ง์ ํ๋ค. |
row-gap | ์ฆ๊ณผ ์ค ์ฌ์ด์ ๊ฐ๊ฒฉ์ ์ง์ ํ๋ค. |
gap | ์นผ๋ผ๊ณผ ์ค ์ฌ์ด์ ๊ฐ๊ฒฉ์ ํ๊บผ๋ฒ์ ์ง์ ํ๋ค. |
์๋ฅผ ๋ค์ด ์ค๊ณผ ์ค ์ฌ์ด์ ๊ฐ๊ฒฉ์ 20px๋ก ํ๊ณ , ์นผ๋ผ๊ณผ ์นผ๋ผ ์ฌ์ด์ ๊ฐ๊ฒฉ์ 30px๋ก ํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ง์ ํ ์ ์๋ค.
row-gap: 20px;
column-gap: 30px;
gap ์์ฑ์ ์ด์ฉํด ์นผ๋ผ๊ณผ ์ค์ ๊ฐ๊ฒฉ์ ํ๊บผ๋ฒ์ ์ง์ ํ ์๋ ์๋๋ฐ, ์ด๋ ์ฒซ ๋ฒ์งธ ๊ฐ์ grid-row-gap์ ํด๋นํ๊ณ ๋ ๋ฒ์งธ ๊ฐ์ column-gap์ ํด๋นํ๋ค.
์ฆ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ ์ ์๋ค.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>CSS Grid Layout</title>
<style>
#wrapper{
display:grid;
grid-template-columns: repeat(3,200px);
gap: 20px;
}
.items{
padding:10px;
background-color:#eee;
}
.items:nth-child(odd){
background-color:#bbb;
}
</style>
</head>
<body>
<div id="wrapper">
<div class="items">Lorem ipsum dolor sit amet consectetur adipisicing elit. Amet, reprehenderit.Lorem ipsum dolor, sit amet consectetur adipisicing elit. </div>
<div class="items">Lorem ipsum dolor, sit amet consectetur adipisicing elit.Lorem ipsum dolor, sit amet consectetur adipisicing elit</div>
<div class="items">Lorem ipsum dolor, sit amet consectetur adipisicing elit.Lorem ipsum dolor, sit amet consectetur adipisicing elit</div>
<div class="items">Lorem ipsum dolor sit amet.Lorem ipsum dolor, sit amet consectetur adipisicing elit</div>
<div class="items">Lorem ipsum dolor sit.Lorem ipsum dolor, sit amet consectetur adipisicing elit</div>
<div class="items">Lorem, ipsum dolor.</div>
</div>
</body>
</html>
๊ทธ๋ฆฌ๋ ๋ผ์ธ์ ์ด์ฉํด ๋ฐฐ์นํ๊ธฐ
๊ทธ๋ฆฌ๋ ๋ ์ด์์์ ๋์ ๋ณด์ด์ง ์๋ ๊ทธ๋ฆฌ๋ ๋ผ์ธ์ด ํฌํจ๋์ด ์๋ค.
์๋ฅผ ๋ค์ด column 3๊ฐ์ row 3๊ฐ๋ก ์ด๋ฃจ์ด์ง ๊ทธ๋ฆฌ๋ ๋ ์ด์์์ ์๊ฐํด ๋ณด์.
์นผ๋ผ์ ๊ตฌ๋ถํ๋ ์ธ๋ก์ค ๋ค๊ฐ, ๊ทธ๋ฆฌ๊ณ row๋ฅผ ๊ตฌ๋ถํ๋ ๊ฐ๋ก์ค ๋ค๊ฐ๊ฐ ์กด์ฌํ๋ค.
์ด ๊ทธ๋ฆฌ๋ ๋ผ์ธ์ ์ด์ฉํด์ ๊ทธ๋ฆฌ๋ ํญ๋ชฉ์ ๋ฐฐ์นํ ์ ์๋๋ฐ, ์ด๋ ์ฌ์ฉํ๋ ์์ฑ์ ๋ค์๊ณผ ๊ฐ๋ค.
์ข ๋ฅ | ์ค๋ช | ์์ |
grid-column-start | ์นผ๋ผ ์์์ ๋ผ์ธ ๋ฒํธ๋ฅผ ์ง์ ํ๋ค. | grid-column-start: 1 |
grid-column-end | ์นผ๋ผ ๋ง์ง๋ง์ ๋ผ์ธ ๋ฒํธ๋ฅผ ์ง์ ํ๋ค. | grid-column-end: 1 |
grid-column | ์นผ๋ผ ์์ ๋ฒํธ์ ์นผ๋ผ ๋ ๋ฒํธ ์ฌ์ด์ ์ฌ๋์(/)๋ฅผ ๋ฃ์ด ์ฌ์ฉํ๋ค. | grid-column: 1/4 |
grid-row-start | ์ค ์์์ ๋ผ์ธ ๋ฒํธ๋ฅผ ์ง์ ํ๋ค. | grid-row-start: 2 |
grid-row-end | ์ค ๋ง์ง๋ง์ ๋ผ์ธ ๋ฒํธ์ด๋ค. | grid-row-end:4 |
grid-row | ์ค ์์๊ณผ ์ค ๋ ๋ฒํธ ์ฌ์ด์ ์ฌ๋์(/)๋ฅผ ๋ฃ์ด ์ฌ์ฉํ๋ค | grid-row: 2/4 |
์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ๊ทธ๋ฆฌ๋ ๋ ์ด์์์ ๋ง๋ ๋ค๊ณ ๊ฐ์ ํด ๋ณด์.
์ฐ์ box1๋ถํฐ box4 ์์ญ๊น์ง ๊ฐ์ธ๊ณ ์๋ #wrapper ์์๋ฅผ ๊ทธ๋ฆฌ๋ ๋ ์ด์์ ์ปจํ ์ด๋๋ก ์ง์ ํ๊ณ , ์นผ๋ผ์ 1fr์ฉ 3๊ฐ๋ก, ์ค ๋์ด๋ repeat(3,100px)๋ก ์ง์ ํ๋ค.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>CSS Grid Layout</title>
<style>
div{
text-align: center;
}
#wrapper{
width: 700px;
display: grid;
grid-template-rows: repeat(3,100px);
grid-template-columns: repeat(3,1fr);
}
.box1{
background-color: blue;
grid-column: 1/4;
}
.box2{
background-color: green;
grid-row:2/4;
}
.box3{
background-color: red;
grid-column:2/4;
}
.box4{
background-color: purple;
grid-row:3/4;
grid-column:3/4;
}
</style>
</head>
<body>
<div id="wrapper">
<div class="box1">1</div>
<div class="box2">2</div>
<div class="box3">3</div>
<div class="box4">4</div>
</div>
</body>
</html>
ํ ํ๋ฆฟ ์์ญ์ ๋ง๋ค์ด ๋ฐฐ์นํ๊ธฐ
์์์ ์ดํด๋ณธ ๊ทธ๋ฆฌ๋ ๋ผ์ธ์ ์์ ๋ฒํธ์ ๋ ๋ฒํธ๋ฅผ ์ผ์ผ์ด ์ง์ ํด์ ๋ ์ด์์์ ๋ง๋ค์ด์ผ ํ๋ค.
ํ ํ๋ฆฟ ์์ญ์ผ๋ก ํญ๋ชฉ์ ๋ฐฐ์นํ๋ฉด ๊ทธ๋ฆฌ๋ ๋ ์ด์์์ ๋ง๋๋ ๊ฒ๋ณด๋ค ๋ ์ฝ๋ค.
์ง๊ธ๋ถํฐ ํ ํ๋ฆฟ ์์ญ์ ์ฌ์ฉํด์ ์์์ ๋ฐฐ์นํ ํญ๋ชฉ๊ณผ ๋๊ฐ์ ๋ ์ด์์์ ๋ง๋ค์ด ๋ณด๊ฒ ๋ค.
๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
1. ํญ๋ชฉ์ ์ ์ฉํ ์คํ์ผ์ grid-area: ์์ญ๋ช ; ์์ฑ์ ์ถ๊ฐํ๋ค.
2. ๋ ์ด์์ ์ปจํ ์ด๋์ ์คํ์ผ์ grid-template-areas: ๋ฐฐ์น๊ตฌ์กฐ; ์์ฑ์ ์ถ๊ฐํ๋ค.
๋ฐฐ์น๊ตฌ์กฐ๋ฅผ ์ ๋ ฅํ๋ ๋ฐฉ๋ฒ์ ์์ ๋ฅผ ์ฐธ๊ณ ํ์.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>CSS Grid Layout</title>
<style>
div{
text-align: center;
}
#wrapper{
width: 700px;
display: grid;
grid-template-rows: repeat(3,100px);
grid-template-columns: repeat(3,1fr);
grid-template-areas:
"box1 box1 box1"
"box2 box3 box3"
"box2 . box4"
}
.box1{
background-color: blue;
grid-area: box1;
}
.box2{
background-color: green;
grid-area: box2;
}
.box3{
background-color: red;
grid-area: box3;
}
.box4{
background-color: purple;
grid-area: box4;
}
</style>
</head>
<body>
<div id="wrapper">
<div class="box1">1</div>
<div class="box2">2</div>
<div class="box3">3</div>
<div class="box4">4</div>
</div>
</body>
</html>
+ span์ ์ด์ฉํด ๋ฐฐ์นํ๊ธฐ
์ฌ๋ฌ ์นธ์ ์ฐจ์งํ ์์์ span ์์๊ฐ์ ๋ถ์ฌํ์ฌ ์ฌ๋ฌ ์นธ์ ์ฐจ์งํ๊ฒ ํ ์๋ ์๋ค.
.calculator form .clear{
grid-column: span 3;
}
.calculator form .result{
grid-column: span 2;
}