개발(Web)/Web

[CSS] Grid Items 정렬하기

shinyelee 2022. 1. 19. 16:47

Making Layouts - CSS Grid

Grid Items 정렬하기

004.html

<!DOCTYPE html>
<html lang="en">
  <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" />
    <link rel="stylesheet" href="004.css" />
    <title>Grid</title>
  </head>
  <body>
    <div class="grid">
      <div class="header">header</div>
      <div class="content">content</div>
      <div class="nav">nav</div>
      <div class="footer">footer</div>
    </div>
  </body>
</html>

004.css

.grid {
  display: grid;
  gap: 10px;
  height: 50vh;
  grid-template-columns: repeat(4, 1fr);
  grid-template-rows: repeat(4, 1fr);
}

.header {
  background-color: springgreen;
}

.content {
  background-color: deepskyblue;
}

.nav {
  background-color: mediumpurple;
}

.footer {
  background-color: orange;
}

이 상태에서 시작해보자.
개발자 도구로 전체 grid를 보면 이렇다.


justify-items

justify-items: stretch;는 grid 내 item들을 셀 너비에 맞춰 좌우로 늘린다(기본값).
justify-items: start;는 grid내 item들을 셀의 시작점(main axis 기준)에 붙인다.
justify-items: center;는 grid내 item들을 셀의 가운데(main axis 기준)에 배치한다.
justify-items: end;는 grid내 item들을 셀의 끝점(main axis 기준)에 붙인다.


align-items

align-items: stretch;는 grid 내 item들을 셀 너비에 맞춰 상하로 늘린다(기본값).
align-items: start;는 grid내 item들을 셀의 시작점(cross axis 기준)에 붙인다.
align-items: center;는 grid내 item들을 셀의 가운데(cross axis 기준)에 배치한다.
align-items: end;는 grid내 item들을 셀의 끝점(cross axis 기준)에 붙인다.


place-items

align-items와 justify-items는 place-items로 축약해 쓸 수 있다.
place-items: align-items속성 justify-items속성; 형태로 쓰면 된다.
여기서 한 번 더 축약할 수 있는데, 똑같은 옵션을 반복할 경우 한 번만 써도 똑같이 적용된다.
즉 place-items: center center;는 place-items: center;로 써도 된다.


Block 요소와 Stretch 옵션

align-items: stretch; justify-items: stretch; 또는 place-items: stretch;를 적용하면 셀이 꽉 차고,
그 외 옵션에서는 item들의 크기가 최소화 된다.
좀 더 정확하게 말하면
item들의 크기가 '내부 텍스트의 크기 및 길이에 맞춰' 최소화 된다.
따라서
font-size와 텍스트 길이를 변경하면 화면에 표시되는 셀과 item들의 크기도 달라질 수 있다.
item들의 내부 텍스트를 삭제하면
크기를 맞출 텍스트가 없으므로 item들의 크기가 0이 된다.
height와 width를 주면
item들이 텍스트 유무와 무관하게 일정한 크기를 유지한다.
단, height와 width가 있으면 stretch를 적용해도
item들의 크기가 변하지 않고, stretch 대신 start를 적용한 것 처럼 보인다.


참고

 

justify-items - CSS: Cascading Style Sheets | MDN

The CSS justify-items property defines the default justify-self for all items of the box, giving them all a default way of justifying each box along the appropriate axis.

developer.mozilla.org

 

align-items - CSS: Cascading Style Sheets | MDN

The CSS align-items property sets the align-self value on all direct children as a group. In Flexbox, it controls the alignment of items on the Cross Axis. In Grid Layout, it controls the alignment of items on the Block Axis within their grid area.

developer.mozilla.org

 

place-items - CSS: Cascading Style Sheets | MDN

The CSS place-items shorthand property allows you to align items along both the block and inline directions at once (i.e. the align-items and justify-items properties) in a relevant layout system such as Grid or Flexbox. If the second value is not set, the

developer.mozilla.org

반응형

'개발(Web) > Web' 카테고리의 다른 글

[CSS] Grid Item 정렬하기  (0) 2022.01.21
[CSS] Grid Container 정렬하기  (0) 2022.01.20
[CSS] Grid Template  (0) 2022.01.18
[CSS] Grid Item  (0) 2022.01.17
[CSS] Grid Container  (0) 2022.01.16