티스토리 뷰
설명
화면 하단 부분에 닷 버튼을 추가합니다.
현재의 이미지 인덱스 값과 닷버튼의 인덱스 값을 같게 만들어 닷버튼을 누르면 해당 이미지로 이동합니다
const sliderWrap = document.querySelector(".slider__wrap");
const sliderImg = document.querySelector(".slider__img"); //이미지 보이는 영역
const sliderInner = document.querySelector(".slider__inner"); //이미지 움직이는 영역
const slider = document.querySelectorAll(".slider"); //5개의 이미지 저장
const sliderBtn = document.querySelector(".slider__btn");
const sliderDot = document.querySelector(".slider__dot");
let currentIndex = 0;
let sliderCount = slider.length;
let sliderWidth = sliderImg.offsetWidth;
let dotIndex = "";
let dotActive;
function init(){ //시작 하자마자 실행(초기화 할때 사용)
slider.forEach(() => {
dotIndex += "<a href='#' class='dot'></a>";
})
sliderDot.innerHTML = dotIndex;
//첫 번째 닷 버튼에게 활성화 표시(active) --> el.firstElementChild
sliderDot.firstElementChild.classList.add("active");
}
init();
function gotoSlider(num){ //이미지의 인덱스 값
sliderInner.style.transition = "all 400ms";
sliderInner.style.transform = "translateX("+ -sliderWidth * num +"px)";
//curentIndex--;
//curentIndex++;
currentIndex = num; //현재의 값
dotActive = document.querySelectorAll(".slider__dot .dot");
//num = [1, 2, 3, 4, 5]
dotActive.forEach(el => {
el.classList.remove("active"); //.active클래스를 지워줌
})
dotActive[num].classList.add("active"); //현재 인덱스 값만 .active클래스를 추가
};
document.querySelectorAll(".slider__btn a").forEach((btn, index) => {
btn.addEventListener("click", () => {
let prevIndex = (currentIndex + (sliderCount - 1)) % sliderCount; //prevIndex는 - 1 씩 감소
let nextIndex = (currentIndex + 1) % sliderCount; //nextIndex는 + 1 씩 증가
if(btn.classList.contains("prev")){ //만약 버튼을 눌렀을 때 ".prev"가 있으면
gotoSlider(prevIndex) //gotoSlider(prevIndex)를 실행
} else { //버튼을 눌렀을 때 ".prev"가 없으면
gotoSlider(nextIndex) //gotoSlider(nextIndex)를 실행
};
});
});
//닷 버튼을 클릭했을 때 해당 이미지로 이동
document.querySelectorAll(".slider__dot .dot").forEach((dot, index) => { //닷 버튼을 눌렀을 때
dot.addEventListener("click", () => {
gotoSlider(index) //이미지의 인덱스 값으로 넘어감
});
});
'Script Sample > Slider Effect' 카테고리의 다른 글
Slider Effect 무한, 버튼 추가, 닷 버튼 추가, 자동 플레이, 시작 버튼, 정지 버튼 (0) | 2022.04.14 |
---|---|
Slider Effect 무한, 버튼 추가, 닷 버튼 추가 (0) | 2022.04.14 |
Slider Effect - 이전, 다음 버튼 추가 (0) | 2022.02.17 |
Slider Effect - 위로 움직이기(연속적) (0) | 2022.02.17 |
Slider Effect - 연속적으로 움직이기 (0) | 2022.02.16 |
댓글
© 2018 webstoryboy