본문으로 바로가기

슬라이드 만들기1

category J QUERY 2019. 11. 26. 14:33

문제.

posit 으로 5개의 이미지가 버튼을 클릭했을때 마다 슬라이드 될 수 있도록 해보세요.

(이미지의 마지막장과 가장 첫번째장 이 넘어가면 슬라이드가 동작하지 않도록 하세요.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Step05_Example2.html</title>
    <style>
        .wrapper{
            width: 400px;
            height: 400px;
            border: 1px solid red;
            position: relative;
            overflow: hidden;
        }
        .wrapper img{
            width: 400px;
            position: absolute;
            top: 0;
            transition: left 0.4s ease-out;
        }
        .wrapper img:nth-child(1){
            left: 0;
        }
        .wrapper img:nth-child(2){
            left: 400px;
        }
        .wrapper img:nth-child(3){
            left: 800px;
        }
        .wrapper img:nth-child(4){
            left: 1200px;
        }
        .wrapper img:nth-child(5){
            left: 1600px;
        }
    </style>
</head>
<body>
    <div class="wrapper">
        <img src="images/image1.png"/>
        <img src="images/image2.png"/>
        <img src="images/image3.png"/>
        <img src="images/image4.png"/>
        <img src="images/image5.png"/>
    </div>
    <button id="prevBtn">&laquo;</button>
    <button id="nextBtn">&raquo;</button>
    <script src="js/jquery-3.3.1.js"></script>
    <script>
		//코드 작성해보세요.
    </script>
</body>
</html>

 

어려웠던점. 

버튼을 클릭할때마다 슬라이드 위치가 변경 되어야하는게 어려웠음.

img가 jquery 배열에 들어 있으므로 버튼을 한번 클릭할때마다 for문이 5번 돌면서 5개 img의 left 값을 다 바꿔준다.

  1. 버튼 클릭시 반복문이 돌면서 imgLeft배열에 있는 5개의 값을 변경해준다.
  2. 변경된 배열의 값을 갖고와서 각각의 img 문서에 넣어준다.
    (1) .css();함수를 사용하면 $(".wrapper img")의 문서객체가 모두 동일한 값을 갖게된다.
    (2) .each(); 함수를 사용하면 배열에 담겨있는 각각의 html 문서객체의 값을 따로 변경할 수 있다.

 

정답

    <script>
        var imgLeft=[0, 400, 800, 1200, 1600];
        //오른쪽 버튼 클릭시 사진 움직이기
        $("#nextBtn").on('click',function(){
            // 3. img1의 left가 0일때 슬다이드 멈추기
            if(imgLeft[0]==0){
                return;
            }

            // 1. imgLeft의 배열의 값을 모두 바꿔주기
            for(var i=0; i<imgLeft.length; i++){
                imgLeft[i]+=400;
            }
            // 2. 변경된 배열의 값을 각각의 img 문서에 넣어주기
            $(".wrapper img").each(function(j,item){
                var tmp=imgLeft[j]
                $(item).css("left",tmp+"px");
            });
        });

        //왼쪽 버튼 클릭시 사진 움직이기
        $("#prevBtn").on('click',function(){
            // 3. img1의 left가 0일때 슬다이드 멈추기
            if(imgLeft[4]==0){
                return;
            }

            // 1. imgLeft의 배열의 값을 모두 바꿔주기
            for(var i=0; i<imgLeft.length; i++){
                imgLeft[i]-=400;
            }
            // 2. 변경된 배열의 값을 각각의 img 문서에 넣어주기
            $(".wrapper img").each(function(j,item){
                var tmp=imgLeft[j]
                $(item).css("left",tmp+"px");
            });

        });
    </script>

'J QUERY' 카테고리의 다른 글

슬라이드 만들기 2  (0) 2019.11.26
Jquery Event 연습2  (0) 2019.11.25
Jquery Event 연습1  (0) 2019.11.25
J query 동작 / Event / Effect  (0) 2019.11.25
J Query 문법 / 옵션  (0) 2019.11.25