이전 글에서 완성한 <header>, <footer>에 이어서 <main> 영역을 만들어보겠습니다. 이 글에서는 <main> 영역의 내부를 세부적으로 카피하지는 않고 두가지 방식으로 큰 틀만 나누어 볼게요. ※스압에 주의하세요 1. 큰 단위 -> 작은 단위 순서대로이전 글에서 <body> 전체를 <header>, <main>, <footer> 영역으로 나눴듯이 <main> 영역을 각 구역(div)으로 나눈 뒤 각 구역을 다시 세부적으로 나누는 방법입니다. 우선 저는 <main> 영역을 크게 아래와 같이 나눠보겠습니다. 구역을 나눴으니 이제 위의 레이아웃을 구현하기 위한 방법을 선택해야합니다. 1. width, height, position 설정 2. flex 박스 3. grid 시스템 이전 글에서도 말씀드렸지만 세가지 중 어느 한가지 기술이 반드시 필요한 경우는 없어요. 자신이 가장 잘 활용할 수 있는 기술을 사용하면 됩니다. (grid 시스템이 가장 선호되긴합니다.) 저는 사진 속 8구역을 나누는 작업은 grid 시스템을, 각 구역 내부에서의 작업은 flex 박스를 사용해볼게요. index.html - main
main.css 8개 구역으로 나누기다음으로 위쪽의 네이버 사이트를 자세히 보면 3번구역과 4번구역이 각각 두 부분으로 나뉘어져 있어요. 이 영역들을 각각 3-1, 3-2 / 4-1, 4-2로 flex 박스를 사용해서 나눠보겠습니다. index.html - main
main.css
global.css
완성되었습니다. 여기까지 큰 단위부터 하나씩 나눠가는 방법이었는데요, 눈에 보이는대로 하나씩 나눠가는 방법이기 때문에 비교적 쉽게 레이아웃을 정의할 수 있습니다. 2. grid cell화면을 grid cell이라는 최소단위의 균일한 블록으로 나눈 뒤 cell들을 각 영역에 할당해주는 방식입니다. 개념이 생소하니 그림으로 볼게요. 위에서 첫번째 방법으로 나눴던 최종 레이아웃입니다. 위 레이아웃을 만들기 위해 <main> 영역전체를 X * Y 의 균일한 cell들로 나눠줍니다. (각 영역의 최대공약수 뭐시기로 나눠주시면 됩니다) 가로 3개 * 세로 24개 = 총 72개의 cell들로 나뉘어졌습니다. 계산이 끝났으니 grid 시스템으로 적용해줍니다. index.html - main
main.css
개발자콘솔(F12)을 열어서 <div class="main-container> 요소를 확인해봅니다. 개발자콘솔(F12) - main-container해당요소의 코드에 마우스를 올리면 grid system에 의해 나뉘어진 구역을 확인할 수 있습니다. 다음으로 1번부터 8번구역까지 다음 순서대로 각 cell을 할당해주면 됩니다. - <div>를 생성합니다. index.html - main
- box-one 클래스에 grid-column과 grid-row 속성으로 cell을 할당해줍니다. main.css
아래 그림의 column번호와 row번호를 참고하시면서 얼만큼의 cell을 할당할지 설정해주면됩니다. column, row 번호box-one같은 방식으로 2번째 구역부터 8번째 구역까지 cell을 할당합니다. index.html - main
main.css
grid system에는 더 편하게 작업할 수 있는 shorthand property들이 많으니 문서를 확인하면서 만드시길 권장합니다. https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout 실행화면입니다. grid system 최종이렇게 두번째 방법처럼 cell로 나눈 후 구역에 할당하는 경우에는 cell의 할당량에 따라 레이아웃이 자유롭게 변화될 수 있기 때문에 반응형 디자인이나 확장 및 수정이 용이한 코드가 완성됩니다. -끝- 최종코드 입니다.(두번째 방법 적용 후) index.html
header.css
main.css
footer.css
global.css |