const sliderWrapper = document.querySelector(".sliderWrapper");
const slideBox = document.querySelector(".slideBox");
const slideBoxList = document.querySelectorAll(".slideBox li");
const slideTimeline = document.querySelector(".slideTimeline");
const slideBtnLeft = document.querySelector(".slideBtn-left");
const slideBtnRight = document.querySelector(".slideBtn-right");
let slideTimelineElem;
let timeRunner;
let slideIndex = 1;
let slideWidth = sliderWrapper.clientWidth;
let slidePos;
let slideAble = true;
let runningTime = 5;
let autoRun = true;
function setTimelineElem() {
for (let i = 0; i < slideBoxList.length - 2; i++) {
slideTimeline.innerHTML += "
";
}
slideTimelineElem = document.querySelectorAll(".slideTimeline li");
timeRunner = document.querySelectorAll(".timeRunner");
}
setTimelineElem();
function setSlide() {
slidePos = slideIndex * slideWidth;
slideBox.style.transform = "translateX(-" + slidePos + "px)";
if (slideIndex == 0) {
slideIndex = slideTimelineElem.length;
} else if (slideIndex == slideTimelineElem.length + 1) {
slideIndex = 1;
}
for (let i = 0; i < slideTimelineElem.length; i++) {
slideTimelineElem[i].classList.remove("slidePlay");
}
slideTimelineElem[slideIndex - 1].classList.add("slidePlay");
if(autoRun){
pauseAuto();
playAuto();
}
}
function smoothSlide() {
slideBox.style.transition = "transform 0.8s";
setSlide();
}
function pauseAuto() {
slideTimeline.id = "state-pause";
for (let i = 0; i < timeRunner.length; i++) {
timeRunner[i].style.transition = "0s";
timeRunner[i].classList.remove("run");
}
}
function playAuto() {
slideTimeline.id = "state-play";
if (autoRun == true) {
timeRunner[slideIndex - 1].style.transition = runningTime + "s linear";
timeRunner[slideIndex - 1].classList.add("run");
}
}
function slideControl() {
if (autoRun == true) {
autoRun = false;
pauseAuto();
} else if (autoRun == false) {
autoRun = true;
playAuto();
}
}
function slideLeft() {
if (slideAble == true) {
slideAble = false;
slideIndex--;
smoothSlide();
}
}
function slideRight() {
if (slideAble == true) {
slideAble = false;
slideIndex++;
smoothSlide();
}
}
for (let i = 0; i < slideTimelineElem.length; i++) {
slideTimelineElem[i].addEventListener("click", function () {
slideIndex = i + 1;
smoothSlide();
});
timeRunner[i].addEventListener("transitionend", function () {
slideIndex++;
smoothSlide();
});
}
slideBox.addEventListener("transitionend", function () {
slideBox.style.transition = "0s";
setSlide();
slideAble = true;
});
window.addEventListener("load", function () {
setSlide();
playAuto();
});
window.addEventListener("resize", function () {
slideWidth = sliderWrapper.clientWidth;
setSlide();
});