jQuery를 이용한 슬라이드 애니메이션 02
안녕하세요. 오늘은 필자가 웹디자인기능사 실기를 준비하면서 쓰는 jQuery를 이용한 슬라이드 애니메이션 글 두번째입니다.
포스팅에 앞서 필자도 부족한 부분이 많으니 양해 부탁드립니다.
이 HTML 및 JavaScript 코드 스니펫은 jQuery를 사용하여 간단한 이미지 슬라이더를 구현한 것입니다. 각 구성 요소와 작동 방식을 살펴보겠습니다.
HTML 구조:
1
2
3
4
5
6
7
8
9
10
<section id="slider">
<div class="slider__wrap">
<div class="slider S1"><img src="이미지링크"
alt=""><span>이미지1</span></div>
<div class="slider S2"><img src="이미지링크"
alt=""><span>이미지2</span></div>
<div class="slider S3"><img src="이미지링크"
alt=""><span>이미지3</span></div>
</div>
</section>
- 기사 구조: 높이가
300px
이고 배경색이#ddd
인 슬라이더(#slider
)가 포함되어 있습니다. - 슬라이더 래퍼: 슬라이더 항목(
div.slider
)을 모두 감싸는.slider-wrap
클래스의div
가 있습니다.
CSS 스타일링:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#slider {
width: 100%;
height: 350px;
background-color: #ccc;
margin: 0 auto;
position: relative;
display: flex;
justify-content: center;
}
#slider .slider__wrap {
position: relative;
width: 100%;
height: 100%;
}
#slider .slider__wrap .slider {
position: absolute;
width: 100%;
height: 100%;
}
#slider .slider__wrap .slider img {
width: 100%;
height: 100%;
}
#slider .slider__wrap .slider span {
position: absolute;
left: 50%;
top: 50%;
padding: 10px 20px;
content: '';
transform: translate(-50%, -50%);
color: #fff;
background-color: #000;
}
- 기본 스타일링:
#slider
,.slider-wrap
, 그리고 각각의.slider
요소에 스타일을 적용합니다. - 텍스트 위치 지정: 각
.slider
내부의.text
div는transform
및top
/left
속성을 사용하여 부모.slider
의 가운데에 절대적으로 위치합니다.
JavaScript (jQuery):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script>
window.onload = function () {
let curnetIndex = 0;
const slider = document.querySelectorAll(".slider");
slider.forEach(img => img.style.opacity = "0");
slider[0].style.opacity = "1";
setInterval(() => {
let nextIndex = (curnetIndex + 1) % slider.length;
slider[curnetIndex].style.opacity = "0";
slider[nextIndex].style.opacity = "1";
slider.forEach(img => img.style.transition = "all 1s")
curnetIndex = nextIndex;
}, 3000);
}
</script>
- 네비게이션 호버: 네비게이션 항목(
li
) 위에 마우스를 올리면 드롭다운 메뉴(ul
)가 표시되고 숨겨지도록mouseover
및mouseout
이벤트를 사용합니다. - 이미지 슬라이더 로직:
- 초기화: 첫 번째
.slider
요소를 복제하고.slider-wrap
의 끝에 추가하여 부드러운 루프 효과를 만듭니다. - 인터벌 함수: 3초(3000밀리초)마다 실행됩니다.
curnetIndex
(현재 인덱스)를 증가시켜 현재 슬라이드를 추적합니다.animate
를 사용하여.slider-wrap
을 왼쪽으로 이동하여 다음 슬라이드를 표시합니다(marginLeft
로 제어).curnetIndex
가3
과 같은지 확인합니다(복제된 슬라이드).- 첫 번째 슬라이드로 재설정하여 무한 루프를 만듭니다(
curnetIndex = 0
)(marginLeft: 0
로 재설정).
- 첫 번째 슬라이드로 재설정하여 무한 루프를 만듭니다(
- 초기화: 첫 번째
중요 사항:
- 복제: 첫 번째
.slider
를 복제하고 끝에 추가하여 마지막 슬라이드에서 첫 번째 슬라이드로 부드럽게 이동합니다. - 애니메이션: 슬라이드는
.slider-wrap
의marginLeft
속성을 조정하여 애니메이션됩니다. - 재설정: 마지막 슬라이드에 도달한 후에는 즉시 첫 번째 슬라이드로 재설정되어 계속해서 루프됩니다.
이렇게 간단하게 jQuery를 이용해서 슬라이드를 부드럽게 넘기는 애니메이션을 구현했습니다.
오늘도 필자의 부족한 글 읽어주셔서 감사합니다.
This post is licensed under CC BY 4.0 by the author.