기본 콘텐츠로 건너뛰기

bxSlider custom Botton

FRONTEND / JQUERY

jQuery bxSlider: 나만의 커스텀 버튼(Prev/Next/Stop)으로 슬라이더 제어하기

bxSlider의 기본 스타일을 벗어나, 별도로 제작한 버튼 이미지나 HTML 요소로 슬라이더를 완벽하게 제어하는 방법을 알아봅니다. 인스턴스 변수를 활용한 API 호출 패턴을 실무 예제로 정리했습니다.

1. HTML 구조: 슬라이더와 제어 버튼 분리

가장 먼저 해야 할 일은 bxSlider가 적용될 리스트(ul > li)와 이를 제어할 버튼들을 HTML 상에 배치하는 것입니다. 이때 제어 버튼들은 bxSlider 컨테이너 외부에 있어도 상관없으며, 고유한 ID를 부여하여 스크립트에서 식별할 수 있게 합니다.

<div class="slider-wrapper">
    <!-- 1. 커스텀 컨트롤 버튼 영역 -->
    <div class="custom-controls">
        <button type="button" id="btn_prev">이전</button>
        <button type="button" id="btn_stop">정지/재생</button>
        <button type="button" id="btn_next">다음</button>
    </div>

    <!-- 2. bxSlider가 적용될 슬라이드 영역 -->
    <ul class="bxslider">
        <li><img src="image1.jpg" alt="슬라이드 1"></li>
        <li><img src="image2.jpg" alt="슬라이드 2"></li>
        <li><img src="image3.jpg" alt="슬라이드 3"></li>
    </ul>
</div>

2. 핵심 로직: 인스턴스 저장 및 API 호출

bxSlider를 초기화할 때 가장 중요한 포인트는 **반환되는 인스턴스를 변수에 저장**하는 것입니다. 저장된 변수를 통해 goToNextSlide, stopAuto 등의 내장 메서드를 호출하여 슬라이더를 외부에서 조작할 수 있습니다.

또한, bxSlider가 기본적으로 생성하는 컨트롤러(좌우 화살표, 페이저)가 방해되지 않도록 옵션에서 비활성화(false) 처리해야 합니다.

3. 전체 JavaScript 구현 코드

아래 코드는 슬라이더를 초기화하고, 각 버튼 클릭 시 해당 기능을 수행하도록 이벤트를 바인딩하는 전체 로직입니다. 특히 정지/재생 토글 로직을 유심히 살펴보세요.

$(document).ready(function(){
    
    // 1. 슬라이더 인스턴스를 변수(mySlider)에 저장
    var mySlider = $('.bxslider').bxSlider({
        auto: true,          // 자동 재생 켜기
        speed: 500,          // 전환 속도
        pager: false,        // 기본 페이저 숨김
        controls: false,     // 기본 화살표 숨김
        autoControls: false  // 기본 재생/정지 버튼 숨김
    });

    // 2. [이전] 버튼 이벤트 바인딩
    $('#btn_prev').on('click', function(){
        mySlider.goToPrevSlide();  // 이전 슬라이드로 이동
        mySlider.startAuto();      // (선택사항) 클릭 후 자동재생 재시작
        return false;
    });

    // 3. [다음] 버튼 이벤트 바인딩
    $('#btn_next').on('click', function(){
        mySlider.goToNextSlide();  // 다음 슬라이드로 이동
        mySlider.startAuto();      // (선택사항) 클릭 후 자동재생 재시작
        return false;
    });

    // 4. [정지/재생] 토글 버튼 로직
    var isPlaying = true; // 현재 재생 상태 플래그

    $('#btn_stop').on('click', function(){
        if(isPlaying) {
            mySlider.stopAuto();   // 재생 중이면 -> 정지
            $(this).text('재생');  // 버튼 텍스트 변경
            isPlaying = false;
        } else {
            mySlider.startAuto();  // 정지 중이면 -> 재생
            $(this).text('정지');  // 버튼 텍스트 변경
            isPlaying = true;
        }
        return false;
    });

});

4. 요약 및 주의사항

  • 변수 저장 필수: var slider = $('.class').bxSlider(); 형태로 선언해야 메서드를 사용할 수 있습니다.
  • 기본 UI 제거: 디자인 충돌을 막기 위해 controls, pager 옵션을 false로 설정하세요.
  • 자동 재생 유지: 사용자가 수동으로 버튼을 클릭하면 자동 재생이 멈출 수 있습니다. 필요하다면 클릭 이벤트 내부에 startAuto()를 추가하여 UX를 개선하세요.

💡 Tip: 이 방식은 bxSlider뿐만 아니라 Swiper.js, Slick 등 대부분의 슬라이더 라이브러리에서 공통적으로 사용되는 API 제어 패턴입니다.

댓글

이 블로그의 인기 게시물

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%);"> 레이어 팝업 내용 <...