๐จ CSS 5 | ๊ทธ๋ฆฌ๋(with ๋๋ฆผ์ฝ๋ by ์จ๋ฆฌ) 1ํ
Step 1 : Grid vs Flexbox
CSS Layout ์ ๋ฐฐ์นํ ์ ์๋ ๋๊ตฌ๋ก๋ Flexbox์ grid ๋ ๊ฐ์ง๊ฐ ์๋ค.
Flexbox์ ๊ฒฝ์ฐ ๊ฐ๋ก๋ฅผ ๊ธฐ์ค์ผ๋ก, ์ธ๋ก๋ฅผ ๊ธฐ์ค์ผ๋ก 1์ฐจ์์ ์ผ๋ก CSS ๋ ์ด์์์ ๋ฐฐ์นํ ์ ์๋ค.
๊ฐ๋ก๋ก ๋ฌถ๊ฑฐ๋
์ธ๋ก๋ก ๋ฌถ๊ฑฐ๋
Grid์ ๊ฒฝ์ฐ ๊ฐ๋ก์ถ๊ณผ ์ธ๋ก์ถ์ ๊ธฐ์ค์ผ๋ก 2์ฐจ์์ ์ผ๋ก CSS ๋ ์ด์์์ ๋ฐฐ์นํ ์ ์๋ค.
Step 2 : Grid
Grid๋ container(๋ถ๋ชจ)์ ์ฃผ๋ ์์ฑ๊ณผ grid cell(์์)์ ์ฃผ๋ ์์ฑ์ผ๋ก ๋๋๋ค.
container ์ ๊พธ๋ฉฐ์ค ์ ์๋ ์์ฑ๋ค
- display
- grid-template-columns
- grid-template-rows
- grid-template-areas
- grid-gap
grid cell์ ๊พธ๋ฉฐ์ค ์ ์๋ ์์ฑ๋ค
- grid-column-start
- grid-column-end
- grid-row-start
- grid-row--end
- grid-area
index.html
<body>
<div class="container">
<div class="item color1">Item1</div>
<div class="item color2">Item2</div>
<div class="item color3">Item3</div>
<div class="item color4">Item4</div>
<div class="item color5">Item5</div>
<div class="item color1">Item6</div>
<div class="item color2">Item7</div>
<div class="item color3">Item8</div>
<div class="item color4">Item9</div>
<div class="item color5">Item10</div>
</div>
</body>
style.css
*{
margin : 0;
padding : 0;
box-sizing : border-box;
}
body{
width : 100vw;
height : 100vh;
}
.container{
background-color : beige;
height: 100vh;
}
.item{
display : flex;
justify-content: center;
align-items: center;
border :1px solid #181818;
font-size :1.2rem;
font-weight : bold;
}
.color1 {
background-color: rgb(247, 114, 114);
}
.color2 {
background-color: rgb(250, 134, 153);
}
.color3 {
background-color: rgb(165, 100, 250);
}
.color4 {
background-color: rgb(129, 103, 255);
}
.color5 {
background-color: rgb(83, 178, 255);
}
Step 3 : Grid ๋ถ๋ชจ์๊ฒ ์ค ์ ์๋ ์์ฑ๋ค(container)
- display : grid
Grid ๋ ์ด์์์ ์ฌ์ฉํ ๊ฒ์ด๋ผ๊ณ ์๋ ค์ฃผ๊ธฐ : ๋ถ๋ชจ์ปจํ ์ด๋์ display : grid
.container{
background-color : beige;
height: 100vh;
display :grid;
}
grid๋ฅผ ์ ์ธํจ๊ณผ ๋์์ ๊ฐ ์์ ์์ดํ ๋ค์ grid cell์ด ๋๋ค.
- grid-template-columns
column์ ์์ดํ ์ ์ด๋ป๊ฒ ๋ฐฐ์นํ ์ง ์ ์
.container{
background-color : beige;
height: 100vh;
display :grid;
/*100px์ฉ 3๊ฐ์ ์์ดํ
์ column์ ๋ฐฐ์น*/
/*repeat ํจ์๋ฅผ ์ฌ์ฉํด์ ๊ฐ๋จํ๊ฒ ์์ฑํ ์ ์๋ค.
repeat(๋ช ๋ฒ ๋ฐ๋ณต, ๊ฐ)
*/
grid-template-columns : 100px 100px 100px;
}
- grid-template-rows
rows์ ์์ดํ ์ ์ด๋ป๊ฒ ๋ฐฐ์นํ ์ง ์ ์
.container{
background-color : beige;
height: 100vh;
display :grid;
grid-template-columns : 100px 100px 100px;
/*1์ด์ 100px, 2์ด์ 200px, 3์ด์ 300px*/
grid-template-rows : 100px 200px 300px;
}
- grid-auto-rows
rows ๊ฐ์์ ์๊ด์์ด ์ผ๊ด์ ์ผ๋ก ์ ์ฉ
๋ชจ๋ rows๋ 150px์ฉ ์ฐจ์ง
.container{
background-color : beige;
height: 100vh;
display :grid;
grid-template-columns : 100px 100px 100px;
grid-auto-rows : 150px;
}
minmax ํจ์๋ฅผ ์ด์ฉํ๋ฉด 150px์ฉ ์ฐจ์งํ๋ ์ปจํ ์ธ ์ ํฌ๊ธฐ๊ฐ 150px์ ๋์ ๊ฒฝ์ฐ ์ปจํ ์ธ ๋งํผ ํฌ๊ธฐ ์ฐจ์งํจ.
๋ค๋ฅธ rows๋ 150px ์ฐจ์ง
.container{
background-color : beige;
height: 100vh;
display :grid;
grid-template-columns : 100px 100px 100px;
grid-auto-rows : minmax(150px, auto);
}
- grid-column-gap
column๋ค ์ฌ์ด gap ์ง์
.container{
background-color : beige;
height: 100vh;
display :grid;
grid-template-columns : 100px 100px 100px;
grid-auto-rows : minmax(150px, auto);
grid-column-gap : 10px;
}
- grid- row-gap
row๋ค ์ฌ์ด gap ์ง์
.container{
background-color : beige;
height: 100vh;
display :grid;
grid-template-columns : 100px 100px 100px;
grid-auto-rows : minmax(150px, auto);
grid-row-gap : 10px;
}
- grid-gap
row, column gap ๋์ ์ง์
.container{
background-color : beige;
height: 100vh;
display :grid;
grid-template-columns : 100px 100px 100px;
grid-auto-rows : minmax(150px, auto);
grid-gap : 10px;
}