CSS

[ CSS ] Grid 행과 열 개수 설정 - auto-fill, auto-fit / minmax 활용

yebeen 2023. 4. 7. 14:08

 

 

아래의 글을 보면 grid 설정법에 대해 작성해 놓았다.

하지만 화면크기, 요소의 수에 따라 자동으로 요소의 크기가 변하게 만들게 만드는 법은 정리를 안 해서 따로 또 글을 쓴다....

 

[ CSS ] Grid 사용하기 , element 위치설정법

css에서 element를 배치시키는 방법에는 grid와 flexbox가 존재한다. flexbox의 경우 element들을 한 번에 특정 위치로 옮기는 것은 쉬우나 그리드모양으로 배치하긴 쉽지 않아 flexbox대신 grid를 사용한다. [

yebeen-study-note.tistory.com

 

 

 

이번엔 grid-template 설정 시 사용할 수 있는 auto-fill, auto-fit에 대해 정리해 볼 것이다.

 

 

 

[ auto-fill , auto-fit ]

 

auto-fill과, auto-fit은  repeat()에서 개수를 입력하는 대신 사용한다.

 

auto-fill : 칼럼이나 행을 가능한 많이 만들어준다.

              : 위치시킬 요소의 수 보다 만들어진 칼럼이나 행의 수가 많으면 빈 공간이 발생

 

auto-fit : 화면에 나타날 요소의 개수에 맞게 행과 열을 가득 채운다.

              : 요소의 수가 많아질수록 요소 하나의 크기는 줄어들고

                요소가 적어질수록 요소 하나의 크기는 늘어난다.

 

아래의 결과와 코드를 보면 차이를 확실히 알 수 있다.

 

grid 칼럼 수의 차이

 

html/css

 

분명 차이점이라곤 4번과 14번 라인에 repeat()에 들어가는 auto-fill, auto-fit 뿐이지만

auto-fill은 한 화면에 7개의 칼럼이 생기고

auto-fit은 요소의 개수에 맞게 4개의 칼럼이 생긴다.

 

 

 

또한 화면의 크기를 늘릴 경우

auto-fill는 칼럼의 수 7개에서 10개로 늘어나지만

auto-fit은 칼럼의 수는 4개로 고정된 상태지만 요소 하나의 크기가 늘어난다.

 

화면 크기 늘리기 전 / 후

 

 

 

요소의 수를 하나 늘린다면 어떻게 될까?

auto-fill에선 요소의 크기 변화는 없지만

auto-fit에선 요소 하나의 크기가 줄어든다.

 

요소 추가 전 / 후

 

 


 

위의 4번, 14번 코드를 살펴보면 repeat( auto-fit, minmax(100px,1fr) ) , repeat( auto-fill, minmax(100px,1fr) )  로 작성된 것을 볼 수 있다.

 

repeat( auto-fill, minmax(100px,1fr) )

minmax 부분에서 최소값( 100px )이 들어갈 수 있는 공간을 일단 다 채운 뒤에

   채우지 못하는 부분( 1~99px )을 element들이 나눠가지게 된다.

= 그렇기에 auto-fill로 설정된 부분은 화면 크기를 조정 시 사이즈가 늘어나다가 다시 100px로 유지되는 것을 볼 수 있다.

   이는 위의 설명처럼 아이템이 들어가지 못하는 크기를 나눠가지다가 element가 들어갈 수 있는 크기가 되면

    다시 100px이 되는 것이다.

 

 

repeat( auto-fit, minmax(100px,1fr) )

= element 갯수가 그리드 공간에 최대를 차지할 수 있게 채운 뒤에 ( max 값이 1fr을 우선으로 한다. )

   공간이 작아져서 최소값( 100px )을 유지못하게 될 때 element를 내리게 되는 것이다.

 

 

 

 

[ 참고 문헌 ]

https://justmakeyourself.tistory.com/entry/grid-extra

'CSS' 카테고리의 다른 글

[ CSS ] Grid - Auto Columns and Rows  (0) 2023.04.16
[ CSS ] SCSS - variables, nesting, mixins, extends  (0) 2023.04.15
[ CSS ] min-content, max-content  (0) 2023.04.07
[ CSS ] fr, Fraction, minmax()  (0) 2023.04.06
[ CSS ] Grid 간단하게 설정하기  (0) 2023.04.06