Script Sample/Slider Effect
Slider Effect 06 - 닷 버튼 추가
Gentlemanjs
2022. 2. 17. 12:47
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"); // next,prev 버튼
const sliderDot = document.querySelector(".slider__dot"); // 닷 버튼
let currentIndex = 0; // 현재 인덱스를 0으로 잡고
let sliderCount = slider.length; // 이미지 갯수를 sliderCount로 저장
let sliderWidth = sliderImg.offsetWidth; // 이미지 width값을 sliderWidth에 저장
let dotIndex = ""; // 닷 버튼을 여러개 만들어 주기 위해 변수 doxIndex 선언
let dotActive; // 활성화 된 dot을 표현하기 위해 변수 docActive 선언
function init(){
// 이미지 갯수만큼 닷 버튼 만들기
// for ( let i=1; i<=sliderCount; i++){
// sliderDot.innerHTML += "<a href='#' class='dot'></a>"
// }
slider.forEach((el) => { // dotIndex에 이미지 갯수만큼 닷 버튼 만들기
dotIndex += "<a href='#' class='dot'></a>"
});
sliderDot.innerHTML = dotIndex;
sliderDot.firstElementChild.classList.add("active") // 첫번째 자식(첫번째 이미지)에 active 추가
}
init();
function gotoSlider(num){ // gotoSlider 라는 매개변수 함수 선언
sliderInner.style.transition = "all 400ms"; // transition 효과 0.4초걸리게
sliderInner.style.transform = "translateX("+ -sliderWidth * num +"px)" // 움직이는 구간을 translate로 이미지 width값만큼 이동
currentIndex = num; // 현재 보여지는 이미지의 번호
dotActive = document.querySelectorAll(".slider__dot .dot"); // 활성화 된 dot을 표현하기 위해 선언
dotActive.forEach(el => { // dot 들 중에
el.classList.remove("active"); // active 클래스를 삭제
})
dotActive[num].classList.add("active"); // 현재 보여지는 이미지 번호 = 닷 번호 이므로 active 클래스 추가
}
document.querySelectorAll(".slider__btn a").forEach((btn, index) => { // next,prev 버튼
btn.addEventListener("click", () => { // next, prev 버튼을 클릭하면
let prevIndex = (currentIndex + (sliderCount-1)) % sliderCount // 0~4만 반복하기 위해 나머지로 표현
let nextIndex = (currentIndex + 1) % sliderCount // 0~4만 반복하기 위해 나머지로 표현
if(btn.classList.contains("prev")){ // 만약 prev 클래스를 포함하면(prev버튼을 클릭하면)
gotoSlider(prevIndex); // gotoSlider로 매개변수 전달
} else {
gotoSlider(nextIndex); // gotoSlider로 매개변수 전달
}
})
})
document.querySelectorAll(".slider__dot .dot").forEach((dot, index) => { // dot 버튼
dot.addEventListener("click", () => { // dot 버튼을 클릭하면
gotoSlider(index); // gotoSlider로 매개변수 전달
})
})