본문 바로가기
코리아 IT아카데미/Javascript·Jquery~~~

7일차 | 퀵메뉴가 있는 슬라이드배너, 좌우,상하,디졸브 슬라이드배너

by Sharon kim 2022. 3. 30.

jquery-ui.js

jquery.js

 

스크롤메뉴.html, .css, .js

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/jquery.js"></script>
    <style>
        *{margin: 0; padding: 0;}
        ul,li{ list-style: none;}
        a{text-decoration: none;}

        #wrap{width: 100%;}
        #header{position: fixed; top:0px; left: 0px; z-index: 9999; opacity: 0.5;
                width: 100%; height: 120px; background-color: blueviolet;}
                #header ul {margin: 0 auto; margin-top:45px ; width: 1000px; height: 30px;}
                #header ul li{ float: left; width: 200px; 
                               text-align: center; line-height: 30px;}
                #header ul li a{ color:#fff; font-size:25px}
                #header ul li.on a{ color:#000; font-size:30px}

        #contents{ width: 100%;}
        #contents > div{ padding-top:120px ; width: 100%; height: 800px;}
        #contents > div.con1{background-color: burlywood;}
        #contents > div.con2{background-color: rgb(33, 216, 192);}
        #contents > div.con3{background-color: rgb(47, 223, 30);}
        #contents > div.con4{background-color: rgb(131, 129, 231);}
        #contents > div.con5{background-color: rgb(150, 46, 119);}

        #q_mn{position: absolute; top:150px; right:50px;
              z-index: 1000;
              width: 60px; height: 140px;
              border-radius: 10px;  
              background-color: cornsilk;}
         #q_mn ul.btns{}
         #q_mn ul.btns li{ margin-bottom: 5px; text-align: center;}
         #q_mn ul.btns li a{ color:#555;}
         #q_mn ul.btns li.on a{ color:darkblue;}
    </style>
    <script> 
     $(document).ready(function(){
       
       var menu = $(".btns li");
       var section = $("#contents > div");

       var h = $(window).height();
       $("#contents > div").height(h);
       $(window).resize(function(){//화면크기 바뀔때 높이 같이 수정
            var h = $(window).height();
            $("#contents > div").height(h);
       });

       menu.click(function(e){
         e.preventDefault();// a태그의  href이벤트를 초기화
         var tg = $(this);
         var i = tg.index();

         var tt = section.eq(i).offset().top;
         $("html,body").stop().animate({scrollTop:tt});
       });

       //메뉴에 addClass로 주석처리
       $(window).scroll(function(){
        var sct = $(window).scrollTop();//현재 화면의 scrollTop를 변수 sct로 사용

        $("#contents > div").each(function(){//contents안에 div를 순서대로 처리
              var tg = $(this); 
              var i = tg.index(); //con1, con2, con3, con4, con5
              if(tg.offset().top <= sct){//해당되는 con들중에 현재 scrollTop에 위치가 동일하다면
                  menu.removeClass("on");//모든메뉴에서 class가 있다 삭제
                  menu.eq(i).addClass("on");       
              }
        });


       });

    
       //퀵메뉴작업
       $(window).scroll(function(){
           var winTop = $(window).scrollTop() + 200;
           $("#q_mn").stop().animate({top:winTop + "px"},500);

       });    


     });//$(document).ready()이벤트 닫기
    </script>
</head>
<body>
    <div id="wrap">
        <div id="header">
        <ul class="btns">
            <li><a href="#con1">con1</a></li>
            <li><a href="#con2">con2</a></li>
            <li><a href="#con3">con3</a></li>
            <li><a href="#con4">con4</a></li>
            <li><a href="#con5">con5</a></li>
        </ul>  
        </div>
        <div id="contents">
           <div class="con1" id="con1">con1</div>
           <div class="con2" id="con2">con2</div>
           <div class="con3" id="con3">con3</div>
           <div class="con4" id="con4">con4</div>
           <div class="con5" id="con5">con5</div>
        </div>
    </div>

    <!--  퀵메뉴 -->
     <div id="q_mn">
         <ul class="btns">
             <li><a href="#con1">con1</a></li>
             <li><a href="#con2">con2</a></li>
             <li><a href="#con3">con3</a></li>
             <li><a href="#con4">con4</a></li>
             <li><a href="#con5">con5</a></li>
         </ul>
     </div>


</body>
</html>

버튼 슬라이드 배너 3종류(좌우 슬라이드, 상하 슬라이드, 디졸브 슬라이드)

 

jquery-1.9.1.min.js

jquery-ui.js

jquery.js

slidebanner.js(공통)

$(function(){
   var current = 0;//현재 보이는 이미지의 인덱스 0부터
   var setIntervalId;
   //지역변수(특정함수내에서만 존재하는 변수), 
   //전역변수(위치와 상관없이 스크립트 전체에서 사용할 수 있는변수)
   $("#btns > li").eq(0).addClass("on");//첫번째 버튼에 현재 이미지가 보이닌까 주석으로 클래스 적용

   $("#btns > li").click(function(){//
       var i = $(this).index();
       //console.log(i);

       $("#btns > li").removeClass("on");
       $(this).addClass("on");


       move(i);//해당되는 버튼의 번호를 매개변수로 보냄
   });
 
    //left_btn
    $(".l_mn").click(function(){
        var n = current - 1;

        if(n == -1){
            n = 3;
        }

        $("#btns > li").removeClass("on");
        $("#btns > li").eq(n).addClass("on");

        move(n);
        //console.log(current);
    });

    //right_btn
    $(".r_mn").click(function(){
        var n = current + 1;

        if(n == 4){
            n = 0;
        }

        $("#btns > li").removeClass("on");
        $("#btns > li").eq(n).addClass("on");

        move2(n);
        //console.log(current);
    });




   //자동실행되는 함수를 제어
   $("#wrap").on({
       mouseover:function(){
          clearInterval(setIntervalId);;//자동실행을 중지
       },
       mouseout:function(){
          timer();// 자동실행을 위해 자동실행 함수를 호출
       }
   });


   //자동실행
   //setInterval(실행문, 시간) 시간차를 자동으로 실행
   //clearInterval() setInterval()의 중지하는 명령어
   timer();// 함수 호출
   function timer(){
    setIntervalId = setInterval(function(){
        var n = current + 1; //1 2 3 

        if(n == 4){
            n = 0;
        }

        $("#btns > li").removeClass("on");
        $("#btns > li").eq(n).addClass("on");

        move(n);
      },3000)
     
   }

좌우 슬라이드.js

//애니메이션 함수 -왼쪽으로 이동
   function move(n){//1
       if(current == n) return; //2 
       
       var currentEl = $("#view ul li").eq(current);//0 1 2 3
       var nextEl = $("#view ul li").eq(n);

       currentEl.css({left:"0%"}).animate({left:"-100%"});
       nextEl.css({left:"100%"}).animate({left:"0%"});

      current = n;  //2-> 현재 보이는 이미지대상 
   }


   //애니메이션 함수 -오른쪽으로 이동
   function move2(n){//1
    if(current == n) return; //2 
    
    var currentEl = $("#view ul li").eq(current);//0 1 2 3
    var nextEl = $("#view ul li").eq(n);

    currentEl.css({left:"0%"}).animate({left:"100%"});
    nextEl.css({left:"-100%"}).animate({left:"0%"});

   current = n;  //2-> 현재 보이는 이미지대상 
}

상하 슬라이드.js

   //애니메이션 함수 -왼쪽으로 이동
   function move(n){//1
       if(current == n) return; //2 
       
       var currentEl = $("#view ul li").eq(current);//0 1 2 3
       var nextEl = $("#view ul li").eq(n);

       currentEl.css({top:"0px"}).animate({top:"-450px"});
       nextEl.css({top:"450px"}).animate({top:"0px"});

      current = n;  //2-> 현재 보이는 이미지대상 
   }


   //애니메이션 함수 -오른쪽으로 이동
   function move2(n){//1
    if(current == n) return; //2 
    
    var currentEl = $("#view ul li").eq(current);//0 1 2 3
    var nextEl = $("#view ul li").eq(n);

    currentEl.css({top:"0px"}).animate({top:"450px"});
    nextEl.css({top:"-450px"}).animate({top:"0px"});

   current = n;  //2-> 현재 보이는 이미지대상 
}

디졸브 슬라이드.js

   //애니메이션 함수 -왼쪽으로 이동
   function move(n){//1
       if(current == n) return; //2 
       
       var currentEl = $("#view ul li").eq(current);//0 1 2 3
       var nextEl = $("#view ul li").eq(n);

       currentEl.css({opacity:1}).animate({opacity:0});
       nextEl.css({opacity:0}).animate({opacity:1});

      current = n;  //2-> 현재 보이는 이미지대상 
   }


   //애니메이션 함수 -오른쪽으로 이동
   function move2(n){//1
    if(current == n) return; //2 
    
    var currentEl = $("#view ul li").eq(current);//0 1 2 3
    var nextEl = $("#view ul li").eq(n);

    currentEl.css({opacity:1}).animate({opacity:0});
    nextEl.css({opacity:0}).animate({opacity:1});

   current = n;  //2-> 현재 보이는 이미지대상 
}

슬라이드배너.html, .css (공통)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>슬라이드 배너</title>
    <script src="js/jquery.js"></script>
    <script src="js/slidebanner.js"></script>
    <style>
        *{margin: 0; padding: 0;}
        ul, li{list-style: none;}
        a{text-decoration: none;}

        #wrap{ width: 100%; height: 450px; position: relative;}

        #view{width: 100%; height: 450px; position: relative; overflow: hidden;}
        #view ul{}
        #view ul li{width: 100%; height: 450px; position: absolute; top:0;
                    font-size: 300px; color:#fff;}
        #view ul li:nth-child(1){left:0; z-index: 400; background-color: blueviolet;}
        #view ul li:nth-child(2){left:0; z-index: 300; background-color: rgb(43, 226, 43);}
        #view ul li:nth-child(3){left:0; z-index: 200; background-color: rgb(208, 226, 43);}
        #view ul li:nth-child(4){left:0; z-index: 100; background-color: rgb(96, 153, 238);}

        #btns{position: absolute; 
              left: 50%; bottom:50px; z-index: 1000;
              margin-left: -45px; }
        #btns li{width: 15px; height: 15px; border-radius: 50%;
                 background-color: azure; float: left;
                 text-align: center; line-height: 15px;
                 margin-right: 10px; cursor: pointer;} 
        #btns li:hover{background-color: aqua;} 
        #btns li.on{background-color: aqua;}    
        
        .l_mn{width:60px; height: 60px; border:1px solid #000; cursor: pointer;
              position: absolute; top:200px; left:100px ; z-index: 9999;}
        .r_mn{width:60px; height: 60px; border:1px solid #000; cursor: pointer;
              position: absolute; top:200px; right:100px ; z-index: 9999;}
        </style>
</head>
<body>
    <div id="wrap">
        <!-- 화면에 보여질 이미지그룹 -->
       <div id="view">
          <ul>
              <li>a</li>
              <li>b</li>
              <li>c</li>
              <li>d</li>
          </ul>
       </div>

       <!-- 이미지들을 제어할 버튼그룹 -->
       <ul id="btns">
           <li>1</li>
           <li>2</li>
           <li>3</li>
           <li>4</li>
       </ul>

       <!-- 좌우에 버튼 -->
       <div class="l_mn">left</div>
       <div class="r_mn">right</div>
    </div>
</body>
</html>