🐨CoalaCoding
DocsExamplesTry itBoardB반
🐨CoalaCoding

개발자를 위한 한국어 웹 기술 문서

문서

  • JavaScript
  • Web Publishing
  • React
  • Python

커뮤니티

  • 게시판
  • 예제 모음
  • Try it 에디터

기타

  • GitHub
  • 관리자
© 2026 CoalaCoding. All rights reserved.
  • 22_무비앱-완료본
  • 01. GOFLIX 프로젝트 소개와 개발환경 설정
  • 02. React 진입점과 라우팅 설정
  • 03. Axios로 TMDB API 연결하기
  • 04. 공통 UI 컴포넌트 만들기 (UI.jsx)
  • 05. App.jsx — 레이아웃 구성과 데이터 가져오기
  • 06. Header와 Footer 만들기
  • 07. Home.jsx — 메인 페이지 완성하기
  • 08. Section과 Card — 영화 카드 목록 만들기
  • 09. MovieDetail — 영화 상세 페이지 만들기
  • 10. Category, ErrorPage 완성하기
  • 11. AI 챗봇 연동하기
  • 12_Swiper_캐러셀_적용과_프로젝트_마무리
  • 13. GOFLEX Gemini CLI 바이브코딩 프롬프트 템플릿
  • 00_시작하기
  • 01_App
  • 02_CSS
  • 03_Nav
  • 04_Hero
  • 05_AboutMe
  • 06_Projects
  • 07_Contact
  • 08_Footer
  • 09_완성_정리
  • 10_바이브코딩
  1. 홈
  2. 문서
  3. React
  4. 실전 프로젝트
  5. 12_Swiper_캐러셀_적용과_프로젝트_마무리

12_Swiper_캐러셀_적용과_프로젝트_마무리

Swiper 라이브러리로 터치 슬라이드를 추가하고, 프로젝트를 최종 점검한다

코드 블록의 Try it Yourself 버튼으로 직접 실행할 수 있다.

구문

1. Swiper란?

Swiper(스와이퍼)는 터치 슬라이드/캐러셀(Carousel, 회전목마형 슬라이드)을 쉽게 만들어주는 라이브러리이다. 넷플릭스, 유튜브, 쿠팡 같은 서비스에서 콘텐츠를 좌우로 넘기는 UI가 바로 이것이다.

이번 편에서는 6편에서 만든 Section.jsx의 그리드 레이아웃을 Swiper 캐러셀로 업그레이드한다.

순서만들 기능핵심 개념
1단계Swiper 기본 적용Swiper, SwiperSlide, 모듈 import
2단계반응형 설정breakpoints
3단계자동 재생Autoplay 모듈

2. Swiper 설치 확인

1편에서 이미 설치했지만, 혹시 빠뜨렸다면 아래 명령어를 실행한다.

npm install swiper

3. 1단계 — Swiper 기본 적용

src/components/Section.jsx 파일을 열고 전체를 아래로 교체한다.

먼저 import 부분부터 작성한다.

import Card from "./Card";
import { Swiper, SwiperSlide } from 'swiper/react';
import { Navigation, Pagination } from 'swiper/modules';
import 'swiper/css';
import 'swiper/css/navigation';
import 'swiper/css/pagination';
줄설명
2Swiper(컨테이너)와 SwiperSlide(각 슬라이드)를 가져온다.
3Navigation(좌우 화살표)과 Pagination(하단 점) 모듈을 가져온다. Swiper는 필요한 기능만 모듈로 불러오는 방식을 쓴다.
4-6Swiper CSS와 각 모듈 전용 CSS를 불러온다. 이것이 없으면 레이아웃이 깨진다.

이어서 컴포넌트 본체를 작성한다.

export default function Section({ title, items }) {
  return (
    <section className="bg-black py-10 px-4">
      <div className="container mx-auto">
        <h2 className="text-[32px] font-bold mb-6">{title}</h2>
        <Swiper
          modules={[Navigation, Pagination]}
          spaceBetween={16}
          slidesPerView={1}
          navigation
          pagination={{ clickable: true }}
        >
          {items.map((m) => (
            <SwiperSlide key={m.id}>
              <Card movie={m} />
            </SwiperSlide>
          ))}
        </Swiper>
      </div>
    </section>
  );
}
줄설명
7modules에 사용할 모듈을 배열로 전달한다.
8spaceBetween={16}은 슬라이드 간 간격을 16px로 설정한다.
9slidesPerView={1}은 한 번에 1개의 슬라이드를 보여준다.
10navigation은 좌우 화살표 버튼을 활성화한다.
11pagination={{ clickable: true }}는 하단에 클릭 가능한 점 인디케이터를 표시한다.
13-16영화 배열을 순회하며 각 영화를 SwiperSlide로 감싸고, 그 안에 Card를 넣는다.

여기까지 저장하면 슬라이드가 1개씩 보이는 기본 캐러셀이 완성된다.


4. 2단계 — 반응형 설정

모바일에서는 1개, 태블릿에서는 3개, 데스크톱에서는 4개의 카드가 보이게 breakpoints를 추가한다. Swiper 태그 안에 속성을 추가한다.

        <Swiper
          modules={[Navigation, Pagination]}
          spaceBetween={16}
          slidesPerView={1}
          navigation
          pagination={{ clickable: true }}
          breakpoints={{
            640:  { slidesPerView: 2 },
            768:  { slidesPerView: 3 },
            1024: { slidesPerView: 4 },
          }}
        >

breakpoints는 화면 너비에 따라 보이는 슬라이드 수를 조절한다.

화면 너비보이는 카드 수해당 기기
0 ~ 639px1개스마트폰
640 ~ 767px2개큰 스마트폰 / 작은 태블릿
768 ~ 1023px3개태블릿
1024px 이상4개노트북 / 데스크톱
💡TIP

숫자는 프로젝트에 맞게 자유롭게 조절할 수 있다. slidesPerView: 5로 바꾸면 한 번에 5개 카드가 보인다.


5. 3단계 — 자동 재생 추가

슬라이드가 자동으로 넘어가게 하려면 Autoplay 모듈을 추가한다.

import에 Autoplay를 추가한다.

import { Navigation, Pagination, Autoplay } from 'swiper/modules';

그리고 Swiper 태그에 Autoplay 모듈과 옵션을 추가한다.

        <Swiper
          modules={[Navigation, Pagination, Autoplay]}
          spaceBetween={16}
          slidesPerView={1}
          navigation
          pagination={{ clickable: true }}
          autoplay={{ delay: 3000, disableOnInteraction: false }}
          loop={true}
          breakpoints={{
            640:  { slidesPerView: 2 },
            768:  { slidesPerView: 3 },
            1024: { slidesPerView: 4 },
          }}
        >
옵션설명
delay: 30003초(3000ms)마다 다음 슬라이드로 넘긴다.
disableOnInteraction: false사용자가 수동으로 넘긴 뒤에도 자동 재생을 계속한다.
loop={true}마지막 슬라이드 다음에 처음으로 무한 반복한다.

6. 자주 쓰는 Swiper 옵션 모음


7. 자주 발생하는 에러


8. 빌드와 배포

개발이 완료되면 프로덕션(Production, 운영) 빌드를 생성한다.

npm run build
줄설명
1Vite가 코드를 최적화하고 dist 폴더에 배포용 파일을 생성한다. Vercel(버셀), Netlify(넷틀리파이) 같은 호스팅 서비스에 업로드하면 된다.

빌드 결과물을 로컬에서 미리 확인하려면 아래 명령어를 실행한다.

npm run preview

9. 전체 프로젝트 파일 최종 점검

파일역할작성 편
vite.config.jsVite + React + Tailwind 설정1편
src/index.cssTailwind 진입점 + 챗봇 CSS1편, 9편
.envTMDB API 키 저장1편

10. 시리즈 전체 요약

편핵심 내용
1편프로젝트 생성, 패키지 설치, 환경 설정
2편React 진입점, React Router 라우팅
3편Axios 인스턴스, API 키 환경 변수
4편App.jsx 레이아웃, useEffect 데이터 로딩
5편Home 메인 페이지, 히어로 영상, useOutletContext
6편Section/Card 컴포넌트, map(), Props 전달
7편MovieDetail 상세 페이지, useParams, 조건부 렌더링
8편플로팅 챗봇 버튼, 모달, 이벤트 버블링
9편Chatbot 채팅 기능, fetch POST, 스프레드 연산자
10편Swiper 캐러셀, 반응형 슬라이드, 프로젝트 마무리

이 시리즈를 완료하면 React의 핵심 개념(컴포넌트, Props, State, Hook, 라우팅)과 실전 API 연동, 외부 라이브러리 활용까지 경험한 것이다. 이제 이 GOFLIX 프로젝트를 기반으로 기능을 추가하거나, 자신만의 프로젝트를 시작해 보자.

목차

  • 구문