본문 바로가기
Web/CSS

CSS Grid 사용법과 그 정리

by Downy_J 2023. 6. 29.
728x90
반응형
SMALL

웹 사이트의 레이아웃을 만들때

 

저번에 flex를 사용해서 만들었었다

https://whaledowny.tistory.com/24

 

2)CSS_Flexbox

Flexbox Box와 Item 들을 행 또는 열로 자유자제로 배치함 저번에 Display와 Position 을 사용하여 레이아웃을 짜봤었다 그리고 오늘 할 이 Flexbox까지 이해하고 사용하게 되면 앞으로 웹을 제작함에 있어

whaledowny.tistory.com

 

그리고 그 실전으로

https://whaledowny.tistory.com/26

 

반응형 웹 메뉴바 만들기 - 드림코딩님 강의 들으며 정리 한것..

반응형 웹 사이트가 왜 나오게 됬거여? 요즘은 웹 사이트에 접속 할 수있는 단말기가 정말 다양해졌다 때문에 그에 맞게 웹 사이트 역시 변화가 필요 했고 단말기 사이즈에 맞게 반응형으로 만

whaledowny.tistory.com

반응형 웹 메뉴바도 만들었었다

 

flex 잠깐 교통정리 해보자

[ flex ]는 1차원 적으로 아이템을 배치한다

가로(row) 세로(column)

가로줄 이거나

세로줄 이거나로

아이템을 배치 할 수 있었다

 

반면 

[ grid ]는 2차원 적으로 아이템을 배치 할 수 있다

grid flex wrap 속성 사용

grid는 애초에 2차원으로 아이템을 배열하는 식이다

 

그리고 1차원이지만 flex를 사용해  wrap 속성을 쓰면

한줄 다 차고 다음줄로 내려서 저런 grid와 비슷 한 느낌을 낼순 있다

 

그냥

상황 따라 이 둘을 자유자제로 사용하는게 좋다


기본 개념으론

flex에서 부모 container안의 아이템들이

가로로 배치 되거나 세로로 배치가 되듯

 

grid에서 부모 container안의 아이템들을

grid cell이라 하여 배치가 된다

 

부모 컨테이너에 들어갈 속성으로

display: grid
grid-template-columns 가로줄에 배치할 셀 갯수 지정
grid-template-row 세로줄에 배치할 셀 갯수 지
grid-template-areas  
grid-gap grid-column-gap 가로줄 간격
grid-row-gap 세로줄 간격

 

자식 영역인 grid cell같은경우

저 부모 안에서 얼마나 영역을 차지 할건지

grid안에서 내가 어떤 cell에 표기될건지 혹은

몇개의 cell을 차기할건지 등을 지정 할 수있다

gid-cell
grid-column-start 가로 몇번째 cell 부터 몇번째 cell까지 내가 보여줄건가
grid-column-end
grid-row-start 세로 몇번째 cell 부터 몇번째 cell까지 내가 보여줄건가
grid-row-end
gird-area 어떤 영역에 표시할건지 정할수있다

 

그럼 들어가 보자. .


 Grid

 
 자 이렇게 10개 뽑아 놓고 시작을 하자고
CSS ㄱㄱ

준비 끝 이제

그리드

해보자


grid-template-columns

gid-template-rows        


그리드 형식으로바꿨다
1번 2번 3번 100px씩 지정해 주면 이렇게 셀들이 변화한다
row도 건들여주면 이렇게
셀들이 설정값 만큼 벌어진
repeat(갯수, 길이)
를 설정해 주면 그만큼 간편하게 설정이 가능하

그런데 중요한거...

 

저거 지금 px 잖아

반응형 웹이 대세인지금 저러면 안된다

%를 쓰도록 하자


repeat(갯수, 넓이)

1fr

전체 화면에 %를 먹여 키우고 줄이는데 자유롭다
또는!
1fr씩 3개로 나눠
1개 1개 1개 비율로 나누는걸
말 함
가운데만 2fr로 했더니 두배가 됬다

총 1fr씩 4개로 나눠
1대 2대 1 비율로 나눈걸 알수 있
그럼 repeat()와 fr을 섞어
유동적으로 만들어지게끔 하는게 좀 더 좋다

row열은 지금 2줄로 고정 할 필요 있나..?

몇줄이 생길진 모르겠으나 어느정도 간격을 주련다면

row은 auto로 설정해 두면
뭐 몇줄이든 그냥 생성될거
만약 지금처럼 높이 고정인데 컨텐츠가 졸라 많다?

그럴땐 이렇게쓰면 된다


 

grid-gap

가로 좌우 간격
세로 상하 간격
상하좌우 간
전부 균일하게 할거면 padding 도 손봐주면 좋다

[ 정리 ]

부모 컨테이너 display 속성으로 grid로 바꿔 

columns와 row를 손대 봤다

이게다다...

 


부모 컨테이너 안의 자식

그러니깐 Cell에 들어가는 속성을

알아보자

먼저 이걸 좀  알고 들어가야한다

이걸 쓸건데 시작점과 끝점을 알아야 사용이 가능하다

자 그럼 저기 item2를 item3 있는 곳까지 연결해 키운다면

시작과 끝은 어떻게 해야 할


마무리로 실제 이미지 파일을 갖고

그리드를 만들어 보도록 하겠음

 


container의 부모 태그인 body의 padding값을 5rem을 둠으로 안에 컨텐츠들 안으로 밀어 넣었고 바탕색을 검정색으로 바꾼거

display 속성을 grid로 설정  후 template의 columns(가로)를 repeat()을 사용해 창크기에 자유로운 반응형으로 했으며 3칸 1fr의 간격으로 아이템을 배치
grid의 row는 auto로 함으로 창 크기에 고정되지 않으며 세로 길이를 150px로 정함
아이템들 간 거리는 1rem으로두고
이게중요함
grid-template-areas 이건 아이템을 자유롭게 배치 시킬수 있는 기능을 가졌다
각 이미지의 가로 세로를 100%로 잡아두고
object-fit을 cover로 두는건
요소 콘텐츠 박스 크기에 맞춰 대체 콘텐츠의 크기를 조절합니다. 콘텐츠가 콘텐츠 박스를 가득 채웁니다. 서로의 가로세로비가 일치하지 않으면 콘텐츠가 늘어납니다
라고 함... 자세한건 MDN ㄱㄱ
container에서 grid-template-areas를 사용해 각 위치를 맞춰줬으며
사용법은 각 cell에 들어갈 아이템들을 grid-area를 사용해 설정해둔 값을 넣어
배치를 시킨

 

https://developer.mozilla.org/ko/docs/Web/CSS/object-fit

 

object-fit - CSS: Cascading Style Sheets | MDN

CSS object-fit 속성은 <img>나 <video> 요소와 같은 대체 요소의 콘텐츠 크기를 어떤 방식으로 조절해 요소에 맞출 것인지 지정합니다.

developer.mozilla.org

 

728x90

'Web > CSS' 카테고리의 다른 글

CSS 초기화  (0) 2023.07.27
텍스트 관련 스타일  (0) 2023.07.27
반응형 웹 메뉴바 만들기 - 드림코딩님 강의 들으며 정리 한것..  (0) 2023.06.28
2)CSS_Flexbox  (0) 2023.06.26
1)CSS_ 레이아웃 정리, display, position  (0) 2023.06.23