본문 바로가기
CodeIt_Sprint/CSS_레이아웃

(10)CSS_레이아웃_3_Grid-3-grid-auto-rows/columns

by 코잼민 2024. 11. 5.

#Default 상황 :

  • Div Container > Div Box 15개
  • Container Box : display : grid ,
      grid-template:
        repeat(3, 1fr) /
        repeat(3, 1fr);

=> 가로 3개 / 세로 3개 만 했기에, 15개 중 , 9개의 셀만 비율에 맞춰져있고, 나머지는 걍 저렇게 내팽개 쳐있다.

※그렇다면, 나머지 셀의 px나 비율을 자동으로 적용시킬라면?

개념1_ 부모 Box 에 rows/columns 중 한쪽만 셀을 나눴을 경우, 다른 한쪽의 셀 자동 나누기 => grid - auto - rows/columns 속성

● 언제 써야함?

○ 상황1_ columns/rows 둘 중 한쪽만 셀 나누기 적용되어있을 때,

  상황2_ 셀나눈 요소 개수보다 부모 Box 내에 들어있는 요소가 더 많아, 나머지 Box들도 자동 셀 적용 하고 싶을 때,

● 적용 방법 1 :

○ 상황1에서 사용방법 : 

ex_ grid-template-columns : repeat(3,1fr) // 세로는 정해져 있지않음

=> grid-auto-rows : 1fr //세로는 자동 모두 1fr 로 유지되도록 한다.

○ 상황2에서 사용방법 : 

ex_ 셀의 개수 15개인데, 

      - grid-template-columns : repeat(3,1fr) 

      - grid-template-rows : repeat(3,1fr) //총 9개의 셀에만 적용됨

=> 나머지 가로 / 세로 저절로 1fr로 설정하기

  • grid - auto - rows : 1fr
  • grid - auto - rows : 1fr

● 적용 방법 2 : grid- auto - columns / rows : apx, bpx cpx...

정의 : 셀의 개수에 상관없이 apx, bpx, cpx 로 셀 자동 나누기 (만약 요소 라인이 더 많다면,)

apx , bpx , cpx , apx , bpx ,cpx ... 로 반복 된다.

ex_Default 상황에서, columns는 1fr로 나눈뒤 , grid-auto-rows : 100px 200px 300px 400px로 나눴을 떄,

//맨 끝에 다시 100px로 되돌아가 반복

 

※연습문제  :

 문제 조건 :

2 x 5 그리드에 이달의 음악 순위를 1위부터 10위까지 배치했습니다.

다음을 참고해서 코드를 수정해 주세요.

  • 다섯 로우의 크기를 정하지 않고, 기본적으로 로우의 높이가 160px이 되도록 코드를 수정해 주세요.
  • 각 셀 사이의 여백은 32px이 되도록 해 주세요. //gap : 32px

 

 해결방법 :

저 목록들을 감싸고 있는 Ol Box에 display : grid; grid-template-columns : repeat(2, 1fr) 적용한뒤,

노래들이 10개 말고 더 추가될때도 셀의 높이를 유지하기 위해서, 상황을 대비해서, 자동으로 grid-auto-rows : 160px 로 설정한다.

=> 이게 grid-auto를 배우는 이유 같다.