JavascriptSnippets

jquery를 이용한 슬라이드(slides)배너

jquery에서 사용할 수 있는 slidesjs라는 좋은 툴이 있지만, 퍼블리셔가 작업해서준 HTML 구조와 CSS 변경 작업이 어려워서 직접 만들었습니다.
slidesjs 보다 별로이니 되도록이면 slidesjs 를 쓰도록 하자!
그래도 나름 비슷하게 만든다고 만들었음, 아래 미리 보기로 구현된 모습을 확인 할 수 있습니다.
Javascript Example: jquery를 이용한 슬라이드배너

  • 자바스크립트 부분

    var slides_auto_time = 5000; //자동으로 다음이미지를 불러올시간
    var slides_ani_time = 500; // 애니메이션 초
      
    var slides;
    var slides_pagination;
    var slides_total = 0;
    var slides_idx = 0;
    var slides_time = null;
    var slides_click_page = -1;
    var slides_move_img = -1;
    var slides_button_lock = 0;
      
    $(document).ready(function () {
        slides_main();
    });
      
    function slides_main() {
        slides = $("#slides .main_img .content"); //슬라이드 컨텐츠 영역
        slides_pagination = $("#slides .btn_area p"); // 슬라이드 페이지 영역
      
        slides_total = slides.find("a").length;
      
        var btn_page_html = "";
        for(i=0;i<slides_total;i++) {
            btn_page_html += "<a href=\"javascript:slides_move_page('"+i+"');\" idx='"+i+"'><img src='./images/jquery_slides/btn_off.png' alt='"+(i+1)+"' /></a>\n";
        }
      
        slides_pagination.html(btn_page_html);
      
        slides_pagination.find("a img").eq(0).attr("src", "./images/jquery_slides/btn_on.png");
      
        slides_time = setTimeout("slides_prev()", slides_auto_time);
    }
      
    function slides_page_next() {
        if(slides_click_page == -1) {
            slides_idx--;
      
            if(slides_idx < 0) {
                slides_idx = slides_total-1;
            }
        } else {
            slides_idx = slides_click_page;
            slides_click_page = -1;
        }
        slides_pagination.find("a img").attr("src", "./images/jquery_slides/btn_off.png");
        slides_pagination.find("a img").eq(slides_idx).attr("src", "./images/jquery_slides/btn_on.png");
    }
      
    function slides_page_prev() {
        if(slides_click_page == -1) {
            slides_idx++;
      
            if(slides_idx >= slides_total) {
                slides_idx = 0;
            }
        } else {
            slides_idx = slides_click_page;
            slides_click_page = -1;
        }
        slides_pagination.find("a img").attr("src", "./images/jquery_slides/btn_off.png");
        slides_pagination.find("a img").eq(slides_idx).attr("src", "./images/jquery_slides/btn_on.png");
    }
      
    function slides_next() {
        if(slides_button_lock) return ;
        slides_button_lock = 1;
      
        if(slides_time != null) {
            clearTimeout(slides_time);
            slides_time = null;
        }
      
        slides.find("a").last().css({"margin-left":"-546px"});
        var tmp = slides.find("a").last();
        slides.prepend(tmp);
      
        slides.find("a").eq(0).animate({ marginLeft: "+=546" }, slides_ani_time, function () {
            slides.find("a").css("margin-left","0");
            slides_page_next();
      
            if(slides_move_img > -1) sortSlides();
      
            slides_button_lock = 0;
      
            slides_time = setTimeout("slides_prev()", slides_auto_time);
        });
    }
      
    function slides_prev() {
        if(slides_button_lock) return ;
        slides_button_lock = 1;
      
        if(slides_time != null) {
            clearTimeout(slides_time);
            slides_time = null;
        }
      
        slides.find("a").eq(0).animate({ marginLeft: "-=546" }, slides_ani_time, function () {
            var tmp = slides.find("a").first();
            slides.append(tmp);
            slides.find("a").css("margin-left","0");
            slides_page_prev();
      
            if(slides_move_img > -1) sortSlides();
      
            slides_button_lock = 0;
      
            slides_time = setTimeout("slides_prev()", slides_auto_time);
        });
    }
      
    function slides_move_page(idx) {
        var tmp;
        slides.find("a").each(function () {
            if(idx == $(this).attr("idx")) {
                tmp = $(this);
            }
        });
      
        slides_click_page = idx;
        slides_move_img = idx;
      
        if(slides_idx > idx && idx > -1) {
            slides.append(tmp);
            slides_next();
        } else if(slides_idx < idx && idx < slides_total) {
            slides.find("a").eq(0).after(tmp)
            slides_prev();
        } else {
            slides_click_page = -1;
            slides_move_img = -1;
        }
    }
      
    function sortSlides() {
        var tmp = new Array();
      
        slides_move_img = slides.find("a").eq(0).attr("idx");
      
        slides.find("a").each(function () {
            var idx = $(this).attr("idx");
            tmp[idx] = $(this);
        });
      
        var i = 0;
        while(i < slides_total) {
            slides.append(tmp[slides_move_img]);
      
            slides_move_img++;
            if(slides_move_img >= slides_total) {
                slides_move_img = 0;
            }
      
            i++;
        }
      
        slides_move_img = -1;
    }
    
  • HTML + CSS 부분

    <style>
    body { margin:0; padding:0; }
      
    .contentwrap1 {width:1200px;height:251px;background:url(./images/jquery_slides/bg_main_top.png) no-repeat;padding:16px 0 0 0;position:relative;z-index:9;}
    .main_visual {width:638px;height:250px;margin:0px 0 0 135px;position:relative;}
    .main_img {width:546px;height:250px;margin-left:45px;}
    .main_img ul {width:546px;height:250px;overflow:hidden;float:left;}
    .main_img ul li {float:left;}
      
    p.btn_pre {position:absolute;top:100px;left:0;}
    p.btn_next {position:absolute;top:100px;right:0;}
    .btn_area {position:absolute;bottom:0px;width:1200px;height:39px;background:url(./images/jquery_slides/bg_btnArea01.png) repeat-x;z-index:2;}
    .btn_area p {width:546px;margin-left:180px;text-align:center;}
    .btn_area p span {margin-right:2px;}
      
    #slides .main_img a { float:left; }
    #slides .main_img { overflow:hidden; }
    #slides .main_img .content { width:1092px; }
    #slides .main_img .content img { width:546px; height:250px; }
    </style>
      
    <div class="contentwrap1" id="slides">
        <div class="main_visual">
            <p class="btn_pre"><a href="javascript:slides_prev();"><img src="./images/jquery_slides/btn_pre.png" alt=""/></a></p>
            <div class="main_img">
                <div class="content">
                    <a href="http://www.naver.com" idx="0"><img src="./images/jquery_slides/banner_13754311080.png" alt="배너1" title="배너1" /></a>
                    <a href="http://www.daum.net" idx="1"><img src="./images/jquery_slides/banner_13754328710.png" alt="배너2" title="배너2" /></a>
                    <a href="http://www.naver.com" idx="2"><img src="./images/jquery_slides/banner_13758631920.png" alt="배너3" title="배너3" /></a>
                    <a href="http://jon.rcsoft.co.kr/html/index_new.html" idx="3"><img src="./images/jquery_slides/banner_13759283560.png" alt="배너4" title="배너4" /></a>
                    <a href="http://www.google.co.kr" idx="4"><img src="./images/jquery_slides/banner_13759284440.jpg" alt="배너5" title="배너5" /></a>
                </div>
            </div>
            <p class="btn_next"><a href="javascript:slides_next();"><img src="./images/jquery_slides/btn_next.png" alt=""/></a></p>
        </div>
        <div class="btn_area">
            <p>
            </p>
        </div>
    </div>