Script Sample/Slider Effect

Slider Effect06- 닷 버튼 추가

zㅣ도닝 2022. 2. 17. 13:02
반응형

// slider06
const sliderWrap = document.querySelector(".slider__wrap");      //sliderWrap에 div 태그 .slider__wrap 저장
const sliderImg = document.querySelector(".slider__img");        //sliderImg에 div 태그 .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");

let currentIndex = 0;
let sliderCount = slider.length;    //이미지 갯수
let sliderWidth = sliderImg.offsetWidth;    //이미지 가로 값
let dotIndex = "";
let dotActive;

function init(){
	//이미지 갯수 만큼<a></a>
	// dotIndex += "<a href='#' class='dot'></a>"
	// dotIndex += "<a href='#' class='dot'></a>"
	// dotIndex += "<a href='#' class='dot'></a>"
	// dotIndex += "<a href='#' class='dot'></a>"
	// dotIndex += "<a href='#' class='dot'></a>"
	slider.forEach(() => dotIndex += "<a href='#' class='dot'></a>");
    sliderDot.innerHTML = dotIndex;
    //첫번째 닷 버튼한테 활성화표시(active)
    sliderDot.firstElementChild.classList.add("active");
}
init();

function gotoSlider(num){
	sliderInner.style.transition = "all 400ms";     //0.4초
    //가로축으로 -이미지가로값 * num px 만큼 이동
	sliderInner.style.transform = `translateX(-${sliderWidth * num}px)`;
	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;	 //prev버튼 첫번째이미지에서 마지막이미지로
        let nextIndex = (currentIndex + 1) % sliderCount;	//next버튼 마지막이미지에서 첫번째이미지로

		if(btn.classList.contains("prev")){		// 버튼에 prev가 있다면
        	gotoSlider(prevIndex);		 // prev버튼 동작
        } else {		 // 버튼에 prev가 없다면
        	gotoSlider(nextIndex);		 // next버튼 동작
        };
    });
});
       
document.querySelectorAll(".slider__dot .dot").forEach((dot,index) => {
	dot.addEventListener("click", () => {		// 닷 버튼 클릭시
    gotoSlider(index);		// gotoSlider에 매개변수 index 저장
    })
})
 

setInterval() - Web APIs | MDN

The setInterval() method, offered on the Window and Worker interfaces, repeatedly calls a function or executes a code snippet, with a fixed time delay between each call.

developer.mozilla.org

 

슬라이드 이펙트

이미지 슬라이드 - 닷 버튼 추가 1 2 3 4 5 6 7 8 소스보기 HTML CSS JavaScript jQuery /* slider03 */ .slider__wrap { display: flex; align-items: center; justify-content: center; height: 100vh; } .slider__img { /* 화면 보이는 구간 */ wid

jiseonpack.github.io

 

반응형