티스토리 뷰
{
const sliderWrap = document.querySelector(".slider__wrap")
const sliderImg = document.querySelector(".slider__img") //이미지 보이는 영역
const sliderInner = document.querySelector(".slider__inner") //이미지 움직이는 영역
const slider = document.querySelectorAll(".slider")
const sliderBtn = document.querySelector(".slider__btn") //버튼
const sliderDot = document.querySelector(".slider__dot") //dot 버튼
let currentIndex = 0; //현재 보이는 이미지
let sliderCount = slider.length; //이미지의 총 갯수
let sliderWidth = sliderImg.offsetWidth; //이미지 가로 값
let dotIndex = "";
let dotActive;
function init(){
slider.forEach((sliderDot)=> {
dotIndex += "" //이미지 갯수만큼 생성
});
sliderDot.innerHTML = dotIndex;
sliderDot.firstElementChild.classList.add("active") //첫번째 닷한테 active 추가
}
init();
function gotoSlider(num){
sliderInner.style.transition = "all 400ms" //slider__inner에게 style transition 추가
sliderInner.style.transform = "translateX("+ -sliderWidth * num + "px)"; //slider__inner에 transitionX + 이미지 가로값 + PX 추가
currentIndex = num; //currentIndex-- currentIndex++
dotActive = document.querySelectorAll(".slider__dot .dot");
dotActive.forEach(el => {
el.classList.remove("active"); //dot에 active 제거
})
dotActive[num].classList.add("active"); //현재 보이는 이미지의 dot에 active 추가
}
document.querySelectorAll(".slider__btn a").forEach((btn, index)=> {
btn.addEventListener("click", ()=>{
let prevIndex = (currentIndex + (sliderCount - 1)) % sliderCount;
let nextIndex = (currentIndex + 1) % sliderCount;
if(btn.classList.contains("prev")){
gotoSlider(prevIndex);
}else {
gotoSlider(nextIndex);
}
})
})
document.querySelectorAll(".slider__dot .dot").forEach((dot, index)=> {
dot.addEventListener("click", ()=>{
gotoSlider(index);
})
})
}
'Script Sample > SliderEffect' 카테고리의 다른 글
Slider Effect 08 - 무한, 버튼 추가, 닷 버튼 추가, 자동 플레이, 플레이,정지 버튼 (0) | 2022.04.16 |
---|---|
Slider Effect 07 - 무한, 버튼 추가, 닷 버튼 추가 (0) | 2022.04.16 |
Slider Effect 05 - 버튼 추가 (0) | 2022.02.19 |
Slider Effect 04 - 상,하로 움직이기 (0) | 2022.02.19 |
Slider Effect 03 - 연속적으로 움직이기 (0) | 2022.02.16 |
댓글
© 2018 webstoryboy