기본 콘텐츠로 건너뛰기

Slick Carousel 활용: 중앙 슬라이드 강조 효과 (Center Mode Scale)

FRONTEND / UI LIBRARY

✨ Slick Carousel 활용: 중앙 슬라이드 강조 효과 (Center Mode Scale)

jQuery Slick Carousel의 Center Mode를 활용하여 현재 중앙 슬라이드는 크게, 양옆의 슬라이드는 작게 축소(Scale Down)하여 강조하는 모던한 UI 구현 방법을 알아봅니다.

1. 필수 라이브러리 및 기본 HTML 구성

이 효과를 구현하기 위해서는 jQuery와 Slick Carousel 라이브러리가 필요합니다. CDN을 통해 빠르게 로드하고 기본 HTML 구조를 잡습니다.

<!-- jQuery & Slick 라이브러리 로드 -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="http://cdn.jsdelivr.net/jquery.slick/1.5.5/slick.css" rel="stylesheet" />
<script src="http://cdn.jsdelivr.net/jquery.slick/1.5.5/slick.min.js"></script>

<!-- 캐러셀 컨테이너 -->
<div class="content">
    <div class="center">
        <div><div class="slide">Slide 1</div></div>
        <div><div class="slide">Slide 2</div></div>
        <div><div class="slide">Slide 3</div></div>
        <div><div class="slide">Slide 4</div></div>
        <div><div class="slide">Slide 5</div></div>
    </div>
</div>

2. Slick Carousel 초기화 옵션 (Center Mode)

핵심 효과를 구현하기 위해 `centerMode`, `centerPadding`, `slidesToShow` 옵션을 설정합니다.

$(document).ready(function(){
    $('.center').slick({
        arrows: false,          // 좌우 이동 화살표 숨김
        centerMode: true,       // 중앙 모드 활성화 (핵심)
        infinite: true,         // 무한 루프
        centerPadding: '300px', // 중앙 슬라이드 양옆 여백 (주변 슬라이드 노출 범위)
        slidesToShow: 1,        // 한 번에 보여줄 메인 슬라이드 수
        speed: 600,             // 전환 속도
        dots: true,             // 하단 점 네비게이션
        autoplay : true,        // 자동 재생
        autoplaySpeed : 2000    // 자동 재생 대기 시간
    }); 
});
  • centerMode: true: 슬라이드가 항상 중앙에 오도록 하고, 양쪽의 슬라이드 일부를 보여줍니다.
  • slidesToShow: 1: 중앙에 가장 크게 보일 슬라이드는 1개입니다.
  • centerPadding: '300px': 이 값이 클수록 양옆 슬라이드가 많이 가려지며, 중앙 슬라이드만 강조됩니다.

3. CSS 핵심: 축소(Scale) 및 Z-index 계층 제어

Slick은 현재 활성화된 슬라이드에 .slick-center 클래스를 부여합니다. 이를 이용하여 비활성 슬라이드는 축소하고, 슬라이드가 겹칠 때의 순서(Z-index)를 조정합니다.

3.1. 기본 축소 효과 (Scale Down)

/* 중앙이 아닌 슬라이드는 80%로 축소 */
.slick-slide:not(.slick-center) {
    z-index: 0;
    transform: scale(0.8); 
    opacity: 0.5; /* 흐릿하게 처리 (선택사항) */
}

/* 중앙 슬라이드는 원본 크기 유지 및 최상단 배치 */
.slick-center {
    z-index: 3; 
    transform: scale(1);
    opacity: 1;
}

.slick-slide {
    position: relative;
    transition: all 300ms ease; /* 부드러운 전환 애니메이션 */
}

3.2. 정교한 Z-index 계층 설정 (Overlap)

슬라이드가 서로 겹쳐 보일 때, 중앙 슬라이드가 가장 위에 오고 멀어질수록 뒤로 가도록 설정해야 자연스럽습니다.

/* 중앙 슬라이드 (Level 1) */
.slick-center {
    z-index: 3;
}

/* 중앙 바로 옆 슬라이드 (Level 2) */
.slick-active.slick-center + .slick-slide,
.slick-center + .slick-cloned {
    z-index: 2;
}

/* 두 칸 떨어진 슬라이드 (Level 3) */
.slick-active.slick-center + .slick-slide + .slick-slide {
    z-index: 1;
}

💡 Tip: 이 CSS 선택자 로직은 슬라이드가 회전할 때 인접 형제 선택자(+)를 활용하여 동적으로 깊이감(Depth)을 부여하는 고급 기법입니다.

4. 마무리: 동적 UI의 핵심

jQuery Slick Carousel은 단순한 슬라이더를 넘어, CSS transform 속성과 z-index를 조합하여 이처럼 동적이고 시각적으로 매력적인 3D 느낌의 UI를 쉽게 구현할 수 있게 해줍니다.

특히 centerModecenterPadding 값의 조합을 실험해보며 여러분의 웹사이트에 딱 맞는 최적의 비율을 찾아보세요!

댓글

이 블로그의 인기 게시물

Java Servlet Request Parameter 완전 정복 — GET/POST 모든 파라미터 확인 & 디버깅 예제 (Request Parameter 전체보기)

Java Servlet Request Parameter 완전 정복 — GET/POST 모든 파라미터 확인 & 디버깅 예제 Java Servlet Request Parameter 완전 정복 웹 애플리케이션에서 클라이언트로부터 전달되는 Request Parameter 를 확인하는 것은 필수입니다. 이 글에서는 Java Servlet 과 JSP 에서 GET/POST 요청 파라미터를 전체 출력하고 디버깅하는 방법을 다양한 예제와 함께 소개합니다. 1. 기본 예제: getParameterNames() 사용 Enumeration<String> params = request.getParameterNames(); System.out.println("----------------------------"); while (params.hasMoreElements()){ String name = params.nextElement(); System.out.println(name + " : " + request.getParameter(name)); } System.out.println("----------------------------"); 위 코드는 요청에 포함된 모든 파라미터 이름과 값을 출력하는 기본 방법입니다. 2. HTML Form과 연동 예제 <form action="CheckParamsServlet" method="post"> 이름: <input type="text" name="username"><br> 이메일: <input type="email" name="email"><b...

PostgreSQL 달력(일별,월별)

SQL 팁: GENERATE_SERIES로 일별, 월별 날짜 목록 만들기 SQL 팁: GENERATE_SERIES 로 일별, 월별 날짜 목록 만들기 데이터베이스에서 통계 리포트를 작성하거나 비어있는 날짜 데이터를 채워야 할 때, 특정 기간의 날짜 목록이 필요할 수 있습니다. PostgreSQL과 같은 데이터베이스에서는 GENERATE_SERIES 함수를 사용하여 이 작업을 매우 간단하게 처리할 수 있습니다. 1. 🗓️ 일별 날짜 목록 생성하기 2020년 1월 1일부터 12월 31일까지의 모든 날짜를 '1 day' 간격으로 생성하는 쿼리입니다. WITH date_series AS ( SELECT DATE(GENERATE_SERIES( TO_DATE('2020-01-01', 'YYYY-MM-DD'), TO_DATE('2020-12-31', 'YYYY-MM-DD'), '1 day' )) AS DATE ) SELECT DATE FROM date_series 이 쿼리는 WITH 절(CTE)을 사용하여 date_series 라는 임시 테이블을 만들고, GENERATE_SERIES 함수로 날짜를 채웁니다. 결과 (일별 출력) 2. 📅 월별 날짜 목록 생성하기 동일한 원리로, 간격을 '1 MONTH' 로 변경하면 월별 목록을 생성할 수 있습니다. TO...

CSS로 레이어 팝업 화면 가운데 정렬하는 방법 (top·left·transform 완전 정리)

레이어 팝업 센터 정렬, 이 코드만 알면 끝 (CSS 예제 포함) 이벤트 배너나 공지사항을 띄울 때 레이어 팝업(center 정렬) 을 깔끔하게 잡는 게 생각보다 어렵습니다. 화면 크기가 변해도 가운데에 고정되고, 모바일에서도 자연스럽게 보이게 하려면 position , top , left , transform 을 정확하게 이해해야 합니다. 이 글에서는 아래 내용을 예제로 정리합니다. 레이어 팝업(center 정렬)의 기본 개념 자주 사용하는 position: absolute / fixed 정렬 방식 질문에서 주신 스타일 top: 3.25%; left: 50%; transform: translateX(-50%) 의 의미 실무에서 바로 쓰는 반응형 레이어 팝업 HTML/CSS 예제 1. 레이어 팝업(center 정렬)이란? 레이어 팝업(레이어 팝업창) 은 새 창을 띄우는 것이 아니라, 현재 페이지 위에 div 레이어를 띄워서 공지사항, 광고, 이벤트 등을 보여주는 방식을 말합니다. 검색엔진(SEO) 입장에서도 같은 페이지 안에 HTML이 존재 하기 때문에 팝업 안의 텍스트도 정상적으로 인덱싱될 수 있습니다. 즉, “레이어 팝업 센터 정렬”, “레이어 팝업 만드는 방법”과 같이 관련 키워드를 적절히 넣어주면 검색 노출에 도움이 됩니다. 2. 질문에서 주신 레이어 팝업 스타일 분석 질문에서 주신 스타일은 다음과 같습니다. <div class="layer-popup" style="width:1210px; z-index:9001; position:absolute; top:3.25%; left:50%; transform:translateX(-50%);"> 레이어 팝업 내용 <...