[JavaScript] 자바스크립트 animate(), 이미지 슬라이드 구현
글 작성자: 망고좋아
반응형
🎯 animate(), 이미지 슬라이드 구현하기
- animate()를 사용해서 이미지 슬라이드 구현하기
📝 animate()
element.animate(keyframes, duration)
- CSS와는 별개의 독립적인 애니메이션을 구현할 수 있으며 Animation 인스턴스를 반환한다.
- 반환된 Animation 객체는 애니메이션을 세밀하게 다룰 수 있는 프로퍼티와 메소드, 이벤트를 제공한다.
📕 keyframes
- 애니메이션 키프레임을 가지고 있는 배열이며 각 키프레임을 객체로 구현한다. 그리고 객체의 프로퍼티로 애니메이션이 적용될 속성을 정의한다.
키 프레임을 정의한 객체(속성 명과 값으로 구성)를 원소로 가지고 있는 배열
// 1
xxx.animate([
// from keyframe
{
opacity: 0,
backgroundColor: #FFF
},
// to keyframe
{
opacity: 1,
backgroundColor: #CCC
}
], 1000);
// 2
xxx.animate([
{ transform: translateX(0px) },
{ transform: translateX(200px), offset: 0.7 },
{ transform: translateY(400px), offset: 0.8 },
{ transform: translateX(600px) }
], 2000);
속성과 값이 배열로 구성된 key-value 쌍을 포함하는 객체
xxx.animate({
backgroundColor: [#FFF, #FFFF00], // [from, to]
color: [#000, #0000FF] // [from, to]
}, 2000);
📕 duration
- 애니메이션의 지속 시간을 밀리초(milliseconds)로 설정한다.
📕 optional
- 하나 이상의 옵션 속성을 가지고 있는 객체를 지정한다.
id
: 생략 가능하며 고유 식별키를 DOMString으로 지정delay
: 애니메이션을 지연시키는 시간을 밀리초(milliseconds)로 설정한다. 생략 가능하며 기본 값은 0이다.direction
normal
: 정방향 (기본값)reverse
: 역방향alternate
: 정방향 후 역방향alternate-reverse
: 역방향 후 정방향
duration
: 애니메이션이 완료되는 시간을 밀리초(milliseconds)로 설정한다. 선택사항이지만 기본값은 0이므로 설정하지 않는다면 애니메이션이 실행되지 않는다.easing
: 애니메이션의 속도 변화를 지정한다. 사전에 정의된 값은linear
,ease
,ease-in
,ease-out
,ease-in-out
로 지정할 수 있으며cubic-bezier()
함수도 사용이 가능한다. 생략할 수 있으며 기본 값은linear
이다.endDelay
: 애니메이션이 끝난 후 지연되는 시간을 밀리초(milliseconds)로 설정할 수 있다. 다른 애니메이션의 종료 시간을 기준으로 애니메이션을 시퀀싱 할 때 주로 사용한다. 생략이 가능하며 기본 값은 0이다.fill
- 요소가 기본적으로 가지고 있는 style과 키프레임에 정의된 style과의 관계를 설정한다.
backwards
로 설정하면 바로 첫 키프레임의 style을 가지고 애니메이션이 시작되며 애니메이션이 완료되면 원래의 정의된 style로 돌아오지만forwards
로 설정하면 원래의 style을 유지하다가 애니메이션이 시작되며 애니메이션이 종료된 후 마지막 키프레임의 style을 유지한다.both
는 시작 키프레임으로 style을 가지고 애니메이션을 시작하며 끝나면 마지막 키프레임의 style을 유지한다. 키프레임에 의해 유지된 값은 외부의 CSS 적용으로 재정의해도 그 값을 그대로 유지한다.- 기본 값은 원래의 style을 가지고 애니메이션을 시작하고 끝나면 원래의 style로 돌아오는
none
이다.
iterationStart
- 반복의 어느 시점에서 애니메이션을 시작해야 하는지를 설정한다.
- 예를 들어
0.5
는 첫 번째 반복의 중간에서 시작을 나타내며 이 값을 설정하면 두 번 반복하는 애니메이션이 세 번째 반복 중 중간에서 종료된다. 생략이 가능하며 기본 값은0.0
이다.
iterations
- 애니메이션이 반복되는 횟수를 지정한다. 기본 값은 1이며 요소가 존재하는 한 반복될 수 있도록
Infinity
키워드를 사용할 수도 있다.
- 애니메이션이 반복되는 횟수를 지정한다. 기본 값은 1이며 요소가 존재하는 한 반복될 수 있도록
📝 이미지 슬라이드 구현 코드
// 2) Image Slider
var slider = document.querySelector('#slider');
var slides = slider.querySelector('.slides');
var slide = slides.querySelectorAll('.slide');
var currentSlide = 0; // 현재 화면에 보여지고 있는 슬라이드가 몇 번 슬라이드인지 확인
setInterval(function() {
var from = -(1024 * currentSlide);
var to = from - 1024;
slides.animate({
marginLeft: [from + "px", to + "px"]
}, {
duration: 500,
easing: "ease",
iterations: 1,
fill: "both"
});
currentSlide++;
if (currentSlide === (slide.length - 1)) {
currentSlide = 0;
}
}, 3000);
📌 참고
반응형
'프로그래밍 > JavaScript' 카테고리의 다른 글
[JavaScript] 자바스크립트 실행 컨텍스트 (0) | 2021.11.13 |
---|---|
[JavaScript] 자바스크립트 함수가 실행되는 과정 (0) | 2021.11.13 |
[JavaScript] 자바스크립트 속성과 프로퍼티 (0) | 2021.11.09 |
[ JavaScript] 자바스크립트 주요 노드 프로퍼티 (0) | 2021.11.09 |
[JavaScript] 자바스크립트 DOM 탐색하기 (0) | 2021.11.09 |
댓글
이 글 공유하기
다른 글
-
[JavaScript] 자바스크립트 실행 컨텍스트
[JavaScript] 자바스크립트 실행 컨텍스트
2021.11.13 -
[JavaScript] 자바스크립트 함수가 실행되는 과정
[JavaScript] 자바스크립트 함수가 실행되는 과정
2021.11.13 -
[JavaScript] 자바스크립트 속성과 프로퍼티
[JavaScript] 자바스크립트 속성과 프로퍼티
2021.11.09 -
[ JavaScript] 자바스크립트 주요 노드 프로퍼티
[ JavaScript] 자바스크립트 주요 노드 프로퍼티
2021.11.09