
코드펜 https://codepen.io/gamza/pen/GmYLgV
▣ 구상
- 컨텐츠가 좌측으로 계속해서 이동하는 슬라이드 애니메이션
- 컨텐츠가 뷰포트를 한방향으로 순환하며 반복
▣ 조건
➊ 컨텐츠의 좌측이동
➋ 순환
▣ 준비
· 컨텐츠에 들어갈 이미지 2장 ( 200px * 200px )
◆ 레이아웃 ( html, css )
1. viewport 가 될 div.container 를 추가합니다.
2. viewport 내부에 이미지( <img> ) 를 자식요소로 가진 컨텐츠( div.content ) 2개 추가
3. viewport 의 크기를 컨텐츠 1개의 크기에 맞춥니다.
4. 컨텐츠를 뷰포트의 동일 선상에 위치시키기 위해 float : left 시키고
5. viewport 의 범위를 초과한 컨텐츠가 흘러내리지 않도록 컨텐츠에 직계 부모요소를 추가하여
두 컨텐츠의 넓이를 합친 width값을 적용합니다.
● html
<body>
<div class="container">
<div class="content_box">
<div class="content">
<img src="이미지1주소" alt="이미지1" />
</div>
<div class="content">
<img src="이미지2주소" alt="이미지2" />
</div>
</div>
</div>
</body>
● css
.container{
overflow:hidden;
width:200px;height:200px;
margin:100px auto;
border:3px dotted salmon;
}
.content_box{
height:100%;
width:200%;
}
.content{
float:left;
width:50%;
height:100%;
box-sizing:border-box;
}
◆ 기능( jquery )
1. 첫째 컨텐츠를 좌측으로 이동시킵니다.
2. 애니메이션을 마친 후 "첫째 컨텐츠" 를 뒤로 보냅니다.
( 자연히 "둘째 컨텐츠" 는 "첫째 컨텐츠" 가 됩니다. )
3. 1,2 번을 순회시킵니다.
● javascript
$(function(){
var $move_width = parseInt( $('.content').css('width') ); // 이동할 수치 계산
var $content_box = $('.content_box'); // 컨텐츠 박스 변수저장
// 루프 (순환)
function ani_1(){
animation()
setTimeout( ani_2, 1000 + 10 ); // 1000 + 10( 여유 ) 초 뒤, function ani_2() 로 이동
};
function ani_2(){
animation()
setTimeout( ani_1, 1000 + 10 ); // 1000 + 10( 여유 ) 초 뒤, function ani_1() 로 이동
};
ani_1(); // function ani_1() 로 루프 start
// 로직
function animation(){
$content_box.children().first().stop()
.animate({ marginLeft : - $move_width }, 1000, "linear", function (){
$(this).appendTo( $(this).parent() ).css({ marginLeft : 0});
});
}
});

