자주 사용하는 Swiper 기본 설정 코드
Essepage로 홈페이지를 제작할 때, 저는 이미지 슬라이더로 Swiper를 자주 사용하는데요. 주로 사용하는 기본적인 코드를 정리해 보았습니다.
1. SwiperJS 및 TailwindCSS 추가하기
Essepage에서 Swiper를 사용하려면 먼저 태그 안에 SwiperJS 라이브러리를 불러와야 합니다. 저는 TailwindCSS도 자주 사용해서 함께 추가했습니다.
<essepage-head>
<script src="https://fastly.jsdelivr.net/npm/@tailwindcss/browser@4/dist/index.global.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@10/swiper-bundle.min.css" />
<script src="https://cdn.jsdelivr.net/npm/swiper@10/swiper-bundle.min.js"></script>
</essepage-head>
2. Swiper 슬라이더 HTML 구조
아래는 Swiper를 활용한 이미지 슬라이더의 HTML 코드입니다. 테일윈드로 스타일을 정의했으니, 참고해주세요.
<div class="swiper swiper-slider w-full max-w-xl">
<div class="swiper-wrapper">
<div class="swiper-slide w-full max-w-xl">
<div class="aspect-square w-full h-full bg-red-100 p-4">
<span class="font-bold text-3xl">1</span>
</div>
</div>
<div class="swiper-slide w-full max-w-xl">
<div class="aspect-square w-full h-full bg-orange-100 p-4">
<span class="font-bold text-3xl">2</span>
</div>
</div>
<div class="swiper-slide w-full max-w-xl">
<div class="aspect-square w-full h-full bg-yellow-100 p-4">
<span class="font-bold text-3xl">3</span>
</div>
</div>
<div class="swiper-slide w-full max-w-xl">
<div class="aspect-square w-full h-full bg-green-100 p-4">
<span class="font-bold text-3xl">4</span>
</div>
</div>
<div class="swiper-slide w-full max-w-xl">
<div class="aspect-square w-full h-full bg-blue-100 p-4">
<span class="font-bold text-3xl">5</span>
</div>
</div>
<div class="swiper-slide w-full max-w-xl">
<div class="aspect-square w-full h-full bg-indigo-100 p-4">
<span class="font-bold text-3xl">6</span>
</div>
</div>
<div class="swiper-slide w-full max-w-xl">
<div class="aspect-square w-full h-full bg-purple-100 p-4">
<span class="font-bold text-3xl">7</span>
</div>
</div>
</div>
<div class="swiper-button-next !right-2 !w-6 md:!w-8 !h-6 md:!h-8 !flex !items-center !justify-center !rounded-full !border !border-black !bg-white !text-black">
<svg class="w-4 md:w-5 h-4 md:h-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<polyline points="9 6 15 12 9 18"></polyline>
</svg>
</div>
<div class="swiper-button-prev !left-2 !w-6 md:!w-8 !h-6 md:!h-8 !flex !items-center !justify-center !rounded-full !border !border-black !bg-white !text-black">
<svg class="w-4 md:w-5 h-4 md:h-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<polyline points="15 6 9 12 15 18"></polyline>
</svg>
</div>
</div>
3. 버튼 스타일 및 숨김 처리
커스텀 스타일을 적용하기 위해 Swiper의 기본 버튼을 숨기는 CSS를 추가합니다.
.swiper-button-next::after, .swiper-button-prev::after {
display: none;
}
4. Swiper 실행을 위한 JavaScript 코드
const imageSlider = new Swiper(".swiper-slider", {
loop: true,
speed: 1000,
direction: 'horizontal',
slidesPerView: 1.2,
centeredSlides: true,
spaceBetween: 10,
autoplay: {
delay: 2500,
disableOnInteraction: false,
pauseOnMouseEnter: true,
},
navigation: {
nextEl: ".swiper-button-next",
prevEl: ".swiper-button-prev",
},
breakpoints: {
900: {
slidesPerView: 1,
spaceBetween: 20,
},
},
freeMode: true,
forceToAxis: true
});
주요 설정 옵션 설명
loop: true
슬라이드가 마지막까지 도달하면 다시 처음으로 순환(loop)하도록 설정합니다. 무한 루프처럼 계속 슬라이드를 넘길 수 있습니다.slidesPerView: 1.2
한 번에 보여줄 슬라이드의 개수를 설정합니다. 1.2로 설정하면 한 개의 슬라이드가 완전히 보이고, 다음 슬라이드가 일부 보이게 됩니다.centeredSlides: true
현재 활성화된 슬라이드를 중앙에 위치하도록 설정합니다. 기본적으로 왼쪽 정렬이지만, 이 옵션을 사용하면 중앙 정렬됩니다. 위에1.2
로 설정한slidesPerView
와 함께 사용하면, 슬라이드의 양 옆으로 일부 보이게 표현할 수 있습니다.spaceBetween: 10
슬라이드 간의 간격을 픽셀 단위로 지정합니다. 여기서는 10px 간격을 적용했습니다.speed: 1000
슬라이드 전환 속도를 설정합니다. 단위는 밀리초(ms)이며, 1000ms(=1초) 동안 애니메이션이 진행됩니다.autoplay
슬라이드 자동 재생을 설정하는 옵션입니다.delay
: 2500 → 2.5초(2500ms)마다 자동으로 슬라이드가 넘어갑니다.disableOnInteraction: false
→ 사용자가 슬라이드를 터치하거나 마우스로 조작해도 자동 재생이 멈추지 않습니다.pauseOnMouseEnter: true
→ 마우스를 올리면 자동 재생이 일시 정지됩니다.
breakpoints
레스폰시브 디자인 설정을 적용하는 옵션입니다. 특정 화면 크기 이상일 때 설정을 다르게 적용할 수 있습니다. 여기에 사용된 코드는 이런 의미입니다.- 화면크기가 900px 이상일 때:
slidesPerView: 1 → 한 번에 한 개의 슬라이드만 표시
spaceBetween: 20 → 슬라이드 간 간격을 20px로 변경navigation
이전/다음 버튼을 추가하여 수동으로 슬라이드를 넘길 수 있도록 설정합니다.nextEl: '.swiper-button-next'
→ 다음 슬라이드 버튼 선택자prevEl: '.swiper-button-prev'
→ 이전 슬라이드 버튼 선택자
freeMode: true
사용자가 터치(드래그)하여 슬라이드를 넘길 때, 특정한 위치에서 멈추지 않고 자유롭게 움직일 수 있도록 설정합니다.forceToAxis: true
사용자가 슬라이드를 대각선으로 드래그할 경우, 지정된 방향(가로 또는 세로)으로만 이동하도록 강제하는 옵션입니다.- Swiper는 기본적으로 터치를 인식하면 어느 정도 대각선 이동도 허용하지만, forceToAxis: true를 설정하면 수직 이동을 차단하고 가로 방향(horizontal)으로만 이동하도록 제한합니다.
- freeMode: true와 함께 사용해야 정상적으로 동작합니다.
5. 전체 코드
<essepage-head>
<script src="https://fastly.jsdelivr.net/npm/@tailwindcss/browser@4/dist/index.global.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@10/swiper-bundle.min.css" />
<script src="https://cdn.jsdelivr.net/npm/swiper@10/swiper-bundle.min.js"></script>
</essepage-head>
<div class="swiper swiper-slider w-full max-w-xl">
<div class="swiper-wrapper">
<div class="swiper-slide w-full max-w-xl">
<div class="aspect-square w-full h-full bg-red-100 p-4">
<span class="font-bold text-3xl">1</span>
</div>
</div>
<div class="swiper-slide w-full max-w-xl">
<div class="aspect-square w-full h-full bg-orange-100 p-4">
<span class="font-bold text-3xl">2</span>
</div>
</div>
<div class="swiper-slide w-full max-w-xl">
<div class="aspect-square w-full h-full bg-yellow-100 p-4">
<span class="font-bold text-3xl">3</span>
</div>
</div>
<div class="swiper-slide w-full max-w-xl">
<div class="aspect-square w-full h-full bg-green-100 p-4">
<span class="font-bold text-3xl">4</span>
</div>
</div>
<div class="swiper-slide w-full max-w-xl">
<div class="aspect-square w-full h-full bg-blue-100 p-4">
<span class="font-bold text-3xl">5</span>
</div>
</div>
<div class="swiper-slide w-full max-w-xl">
<div class="aspect-square w-full h-full bg-indigo-100 p-4">
<span class="font-bold text-3xl">6</span>
</div>
</div>
<div class="swiper-slide w-full max-w-xl">
<div class="aspect-square w-full h-full bg-purple-100 p-4">
<span class="font-bold text-3xl">7</span>
</div>
</div>
</div>
<div class="swiper-button-next !right-2 !w-6 md:!w-8 !h-6 md:!h-8 !flex !items-center !justify-center !rounded-full !border !border-black !bg-white !text-black">
<svg class="w-4 md:w-5 h-4 md:h-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<polyline points="9 6 15 12 9 18"></polyline>
</svg>
</div>
<div class="swiper-button-prev !left-2 !w-6 md:!w-8 !h-6 md:!h-8 !flex !items-center !justify-center !rounded-full !border !border-black !bg-white !text-black">
<svg class="w-4 md:w-5 h-4 md:h-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<polyline points="15 6 9 12 15 18"></polyline>
</svg>
</div>
</div>
<style>
.swiper-button-next::after, .swiper-button-prev::after {
display: none;
}
</style>
<script>
const imageSlider = new Swiper(".swiper-slider", {
loop: true,
speed: 1000,
direction: 'horizontal',
slidesPerView: 1.2,
centeredSlides: true,
spaceBetween: 10,
autoplay: {
delay: 2500,
disableOnInteraction: false,
pauseOnMouseEnter: true,
},
navigation: {
nextEl: ".swiper-button-next",
prevEl: ".swiper-button-prev",
},
breakpoints: {
900: {
slidesPerView: 1,
spaceBetween: 20,
},
},
freeMode: true,
forceToAxis: true
});
</script>
6. 실행된 이미지 슬라이더 스크린샷

✨ 마무리
제가 주로 사용하는 Swiper를 활용한 이미지 슬라이더 코드를 정리해보았습니다. 더 자세한 내용이나 직접 사용해보고 싶다면 제가 Essepage 에 만든 무료템플릿을 사용해 보세요😄
독자 의견
저자 @brad 에게 의견 남기기: