스크롤 롤링배너가 4개중 한개씩 위로 롤링되야 하는데 뭐가 문제이지 4개자체가 한꺼번에 올라갑니다.

스크롤 롤링배너가 4개중 한개씩 위로 롤링되야 하는데 뭐가 문제이지 4개자체가 한꺼번에 올라갑니다.

QA

스크롤 롤링배너가 4개중 한개씩 위로 롤링되야 하는데 뭐가 문제이지 4개자체가 한꺼번에 올라갑니다.

답변 1

본문

현재제작중인 샘플site

 

<script type="text/javascript">
$(function(){

    function latestCardBanner(){
        var dir=-1;
        var count=1;
        var num=$(".card_banner_wrap > ul > li").length; // li 갯수
        var animatedly = false;

        function roll(direct){
            var bbi=$(".card_banner_wrap").height(); // ul을 감싸는 div

                    if(animatedly == true ) {
                            return;
                    }
                    animatedly = true;

                    if (direct != -1){
                         $(".card_banner_wrap ul > li:last-child").prependTo($(".card_banner_wrap > ul"));
                         $(".card_banner_wrap ul").css("margin-top", -bbi );
                         $(".card_banner_wrap ul").stop().animate({"marginTop":0},800,function(){
                                 animatedly = false;
                        });
                    }else{
                        $(".card_banner_wrap ul").stop().animate({"marginTop":-bbi},800,function(){
                            $(">li:first-child",this).appendTo($(this));
                            $(".card_banner_wrap ul").css("margin-top",0);
                                animatedly = false;
                        });
                    }
            };

        // 배너 2개 이상일때 3초 자동롤링 실행
        var autoRoll = null;
        function rnSaleBnrRoll(){
            if ($(".card_banner_wrap ul > li").length > 1){ // 배너가 두개부터 실행
                    autoRoll=setInterval(function(){
                    roll(-1);
                    if (count<num){ // 자동롤링 중 li 갯수가 1보다 클때 실행
                        count++
                    }else{ // 자동롤링 중 li 갯수가 1보다 작거나 같을 때 실행
                        count=0;
                    };
                },9000);
            };
        };
        // 마우스 오버시 정지, 높이값 커짐
        if ($(".card_banner_wrap ul > li").length > 1){
            $(".card_banner_wrap ul").on("mouseenter", function(){
                clearInterval(autoRoll);
                $(this).parents(".card_banner_wrap").stop().animate({height:$(this).find("li").height()*$(this).find("li").length+"px"}, 135);
                $(this).parents(".card_banner_wrap").addClass("on");
                $(".card_banner_wrap .card_banner_btn").hide();
            }).on("mouseleave", function(){
                $(this).parents(".card_banner_wrap").stop().animate({height:$(this).find("li").height()+"px"}, 135);
                $(this).parents(".card_banner_wrap").removeClass("on");
                $(".card_banner_wrap .card_banner_btn").show();
                rnSaleBnrRoll()
            });
        };

        // 버튼
        $(".card_banner_wrap > span.card_banner_btn a").click(function(){
            clearInterval(autoRoll);
            if($(this).index()==0) dir=1; else dir=-1; //(화살표) 위아래 방향기능
            roll(dir); //(화살표) 위아래 방향기능
            autoRoll=setInterval(function(){
                roll(-1);
                if(dir==-1){
                    if(count<num) count++;else count=0;
                }else{
                    if(count>0) count--; else count=num;
                }
            }, 9000);
        });

        // 배너 2개 이상일때 자동롤링 함수 실행
        rnSaleBnrRoll();

        // 배너 1개일 경우 버튼 비노출 처리
        if ($(".card_banner_wrap ul > li").length > 1){
            $(".card_banner_wrap .card_banner_btn").css("display","block");
        }else {
            $(".card_banner_wrap .card_banner_btn").css("display","none");
        }
    };

    latestCardBanner();

});
</script>

이 질문에 댓글 쓰기 :

답변 1

앞으로 가능하면 code로 감싸서 보기 좋게 넣어 주세요.

 

코드를 보면 실제로 동작되는 곳이 roll(), rnSaleBnrRoll() 이럼 함수에서 처리되네요.

 

자바스크립트 영역이니 print로 각 변수값을 찍어 가면서 디버깅해 보세요

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 294
© SIRSOFT
현재 페이지 제일 처음으로