문제.
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">«</button>
<button id="nextBtn">»</button>
<script src="js/jquery-3.3.1.js"></script>
<script>
//코드 작성해보세요.
</script>
</body>
</html>
어려웠던점.
버튼을 클릭할때마다 슬라이드 위치가 변경 되어야하는게 어려웠음.
img가 jquery 배열에 들어 있으므로 버튼을 한번 클릭할때마다 for문이 5번 돌면서 5개 img의 left 값을 다 바꿔준다.
- 버튼 클릭시 반복문이 돌면서 imgLeft배열에 있는 5개의 값을 변경해준다.
- 변경된 배열의 값을 갖고와서 각각의 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 |