여러 개의 콘텐츠를 슬라이드 형태로 보여주고 싶은데, 화면 크기에 따라 자동으로 조절되면서 무한으로 반복되는 방법이 궁금하지 않으신가요?
웹사이트를 만들 때 여러 개의 콘텐츠를 한 번에 보여주고 싶을 때가 있습니다. 예를 들어, 쇼핑몰에서는 상품 목록을, 포트폴리오에서는 작품들을 효과적으로 전시할 수 있습니다. 이번 포스트에서는 jQuery와 Swiper 라이브러리를 활용하여 반응형 그리드 슬라이더를 구현하는 방법을 알아보겠습니다.
HTML 구조
|
|
슬라이더의 기본 구조
전체 슬라이더를 감싸는.slider
클래스와 실제 슬라이더가 보여지는.viewport
가 있습니다.viewport
내부에는 Swiper 라이브러리가 인식하는.swiper-wrapper
클래스가 배치됩니다.슬라이드 아이템
.item
클래스로 각 슬라이드 아이템을 구성합니다. 여기서는 1부터 12까지 총 12개의 아이템이 준비되어 있습니다.네비게이션과 페이지네이션
.swiper-prev
와.swiper-next
는 슬라이더 이동 버튼이며,.swiper-pagination
은 현재 슬라이드 위치를 표시합니다. 이 요소들은 Swiper 라이브러리에서 자동으로 연결됩니다.
CSS 스타일
|
|
슬라이더 레이아웃
.slider
에는 최대 너비와 여백을 설정하여 화면 중앙에 배치됩니다. 좌우 패딩은 네비게이션 버튼을 위한 공간을 확보합니다.그리드 레이아웃
.swiper-slide
는 CSS 그리드를 사용하여 한 슬라이드 내 6개의 아이템을 3x2 형태로 배치합니다.gap
속성으로 아이템 간 간격을 설정합니다.아이템 스타일링
각.item
은 고정 높이와 배경색을 가지며, 텍스트는 중앙 정렬됩니다.네비게이션 버튼
이전/다음 버튼은 슬라이더 좌우에 절대 위치로 배치됩니다. 이전 버튼은 화살표 이미지를rotateY
로 회전시켜 반대 방향을 가리키도록 합니다.페이지네이션
페이지네이션은flex
로 중앙 정렬되며, 각bullet
의 스타일과active
상태 스타일을 정의합니다.반응형 처리
모바일 화면(767px 이하)에서는 그리드 컬럼 너비를 조정하여 더 좁은 화면에서도 3개의 아이템이 잘 보이도록 만듭니다.
jQuery 코드
|
|
설정 및 상태 관리
config
객체는 반응형 브레이크포인트와 각 화면 크기별 표시할 아이템 수를 정의합니다.state
객체는 슬라이더의 현재 상태를 추적하는 데 사용됩니다.초기화 함수
initSliders
함수는 각 슬라이더의 원본 아이템을 복제하여 저장합니다. 이 원본 아이템들은 화면 크기가 변경될 때 새로운 슬라이드를 생성하는 데 사용됩니다.디바이스 모드 감지
getDeviceMode
함수는 현재 창 너비에 따라 ‘desktop’이나 ‘mobile’ 모드를 반환합니다.resize
이벤트에서 디바이스 모드가 변경되면 슬라이드를 재구성합니다.슬라이드 재구성
arrangeSlides
함수는 현재 디바이스 모드에 맞게 슬라이드를 다시 구성합니다. 기존 슬라이드를 초기화하고, 원본 아이템들을 현재 모드에 맞는 개수로 그룹화하여 새 슬라이드를 생성합니다.Swiper 인스턴스 생성
initSwipers
함수는 Swiper 인스턴스를 생성하고 설정합니다. 무한 루프, 네비게이션, 페이지네이션 등 Swiper의 다양한 기능을 활용합니다. 슬라이드 변경 시 현재 슬라이드 인덱스를state
에 저장합니다.
반응형 설정 확장하기: 태블릿 추가하기
|
|
위 코드처럼 breakpoints
배열에 태블릿 설정을 추가하면 디바이스별로 더 세밀한 반응형 제어가 가능합니다. 여기서 주의할 점은 width
값을 큰 것부터 작은 순서로 정렬해야 합니다. getDeviceMode
함수는 창 너비가 설정된 width
이상인 첫 번째 breakpoint
를 찾기 때문입니다.
실제 활용 팁
여러 슬라이더 지원
이 코드는 페이지 내 여러 슬라이더를 동시에 지원합니다. 각 슬라이더의 상태는state
객체의 배열에 독립적으로 저장됩니다.다양한 그리드 레이아웃
CSS의grid-template-columns
속성을 수정하여 다양한 그리드 레이아웃을 구현할 수 있습니다. 예를 들어, 2x3 그리드나 4x2 그리드 등 원하는 형태로 변경 가능합니다.
결론
이번 포스트에서는 jQuery와 Swiper를 활용한 반응형 그리드 슬라이더 구현 방법을 알아보았습니다. 이 코드는 화면 크기에 따라 자동으로 콘텐츠 레이아웃을 조정하면서도 무한 루프와 편리한 네비게이션을 제공합니다. 특히 여러 개의 콘텐츠를 그리드 형태로 보여주어야 하는 웹사이트에서 유용하게 활용할 수 있습니다.
이 포스트가 도움이 되셨나요? 더 궁금한 점이나 의견이 있다면 댓글로 남겨주세요. 함께 더 나은 코드를 만들어 나가요!