먼저 피드백부터 수정 후 UI 간단 정렬하기 미션을 진행한다.

<aside> 💡

Mission

image.png

UI 구현 조건

img 구현 조건

코드리뷰 요청시 위의 css가 어떤 역할을 하는지 각 한 줄씩 적어주세요

</aside>

스타일링을 위해 SearchPage.jsx 내부에 직접 스타일을 작성하지 않고, 별도의 SearchPageStyled.js 파일을 생성하여 import하는 방식을 선택했다. 이는 코드의 간결성과 역할 구분을 위한 결정이었다.

스타일링 정리

import styled from "styled-components";

export const SearchWrapper = styled.div`
  padding: 20px;
`;

export const ResultsContainer = styled.div`
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
`;

**export const ImageItem = styled.div`
  width: calc(33.3333% - 5.333px);
`;**

export const Image = styled.img`
  width: 100%;
  height: 100%;
  object-fit: cover;
  aspect-ratio: 1 / 1;
`;

export const LoadingText = styled.div`
  text-align: center;
  margin-top: 20px;
`;

export const ErrorText = styled.div`
  color: red;
  text-align: center;
  margin-top: 20px;
`;

export const ScrollArea = styled.div`
  text-align: center;
  margin-top: 20px;
`;

코드 리뷰 및 설명

각 스타일 컴포넌트의 역할과 CSS 속성에 대한 설명:

  1. SearchWrapper: 전체 검색 결과를 감싸는 컨테이너로, 내부 요소들에 20px의 패딩을 적용합니다.
  2. ResultsContainer:
  3. ImageItem:
  4. Image:
  5. LoadingText, ErrorText, ScrollArea: 로딩, 에러, 스크롤 영역에 대한 스타일링으로, 텍스트 정렬과 여백을 조정합니다.

width 계산에 대한 설명:

원래 calc(33.3333% - 8px)에서 calc(33.3333% - 5.333px)로 변경된 이유는 다음과 같습니다:

  1. 3개의 열이 있고, 각 열 사이에 8px의 gap이 있으므로 총 여백은 16px (8px * 2) 입니다.
  2. 이 16px의 여백을 3개의 열에 균등하게 분배하려면, 각 열에서 5.333px (16px / 3)을 빼야 합니다.