안녕하세요~!! 오늘은 레이아웃 구성 유형의 마지막, grid 유형을 공부해볼게요~!
grid 유형을 사실상 많이 쓴다고 합니다. ㅎㅎ
그러니까 잘 알아둬야 하겠죵~~?
grid
css grid는 기존의 display:flex를 대체할 수 있는 새로운 display property라고 생각하시면 됩니다.
flex와 grid의 가장 큰 차이점은 flex는 1차원 레이아웃인 반면, grid는 2차원 레이아웃이라는 점입니다.
2차원 레이아웃을 지원하기 때문에 행과 열 모두에서 요소를 정렬하고 이동하는 데 사용할 수 있는 많은 도구를 제공합니다. grid는 flex에 비해 더 다양하고 고차원적인 레이아웃이 가능해진다는 장점이 있습니다.
display: grid;
#️⃣grid 속성
속성 | 속성 설명 |
grid | grid속성은 그리드 레이아웃을 정의 |
grid-auto-columns | 열의 크기를 설정 |
grid-auto-flow | 자동 배치 방식을 설정 |
grid-auto-rows | 행의 크기를 설정 |
grid-row | 그리드 아이템의 단축 속성을 설정 |
grid-row-end | 그리드 아이템 행의 끝 위치를 설정 |
grid-row-gap | 그리드 아이템 행의 간격을 설정 |
grid-row-start | 그리드 아이템 행의 시작 위치를 설정 |
grid-template-columns | 열의 크기를 설정 |
그럼 예제를 통해 또 살펴봅시다!
레이아웃 grid유형 코드_(grid 적용하기 전)
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>레이아웃01 - grid 유형</title>
<style>
* {
margin: 0;
padding: 0;
}
body {
background-color: #FFF3E0;
}
#wrap {
width: 1200px;
height: 1080px;
margin: auto;
}
#header {
width: 1200px;
height: 100px;
background-color: #FFE0B2;
}
#nav {
width: 1200px;
height: 100px;
background-color: #FFCC80;
}
#side {
width: 400px;
height: 780px;
background-color: #FFB74D;
}
#contents {
width: 800px;
height: 780px;
background-color: #FFA726;
}
#footer {
width: 1200px;
height: 100px;
background-color: #FF9800;
}
</style>
</head>
<body>
<div id="wrap">
<div id="header"></div>
<div id="nav"></div>
<div id="side"></div>
<div id="contents"></div>
<div id="footer"></div>
</div>
</body>
</html>
이렇게 grid쓰기 전 출력을 해보면 이렇게 블록 요소 때문에 세로로 정렬이 되죠~
grid를 써서 작업해보도록 할게요!
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>레이아웃1 - grid방식</title>
<style>
* {
margin: 0;
padding: 0;
}
body {
background-color: #FFF3E0;
}
#wrap {
width: 1200px;
margin: 0 auto;
display: grid;
grid-template-areas:
"header header"
"nav nav"
"aside section"
"footer footer"
;
grid-template-columns: 400px 800px;
grid-template-rows: 100px 100px 780px 100px;
}
#header {
background-color: #FFE0B2;
grid-area: header;
}
#nav {
background-color: #FFCC80;
grid-area: nav;
}
#aside {
background-color: #FFB74D;
grid-area: aside;
}
#section {
background-color: #FFA726;
grid-area: section;
}
#footer {
background-color: #FF9800;
grid-area: footer;
}
</style>
</head>
<body>
<div id="wrap">
<header id="header"></header>
<nav id="nav"></nav>
<aside id="aside"></aside>
<section id="section"></section>
<footer id="footer"></footer>
</div>
</body>
</html>
순서
display: grid;를 선언해줍니다.
grid-area를 사용해 영역의 이름을 지정해줍니다.
grid-template-areas 속성을 사용해 각 영역의 이름을 할당하고 그리드 영역을 정의합니다.
grid-template-rows와 grid-template-columns를 사용해 각 구역의 width값과 height값을 적어줍니다.
width값과 height값을 썼기 때문에 기존에 자식에게 있던 width값과 height값은 따로 쓰지 않습니다.
그럼 이렇게 레이아웃 화면이 예쁘게 잘 구성이 되었죠?!
grid 유형을 잘 익혀두어 레이아웃 짤 때 활용하면 참 좋을 거 같아요 ㅎ__ㅎ
유용하게 잘 봤다고 생각하시면
공감과 댓글!!!! 부탁드립니당 ヾ(@⌒ー⌒@)ノ