๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Javascript/Effect

์Šฌ๋ผ์ด๋“œ ์ดํŽ™ํŠธ (3)

by oranssy 2022. 9. 2.
728x90
๋ฐ˜์‘ํ˜•

โญ๏ธ ์Šฌ๋ผ์ด๋“œ ์ดํŽ™ํŠธ 03 โญ๏ธ


01. < script > ์— ์ž‘์„ฑํ•˜๊ธฐ

const sliderWrap = document.querySelector(".slider__wrap");
const sliderImg = document.querySelector(".slider__img"); // ๋ณด์—ฌ์ง€๋Š” ์˜์—ญ
const sliderInner = document.querySelector(".slider__inner"); // ์›€์ง์ด๋Š” ์˜์—ญ
const slider = document.querySelectorAll(".slider"); // ์ด๋ฏธ์ง€๋“ค
let currentIndex = 0; // ํ˜„์žฌ ๋ณด์ด๋Š” ์ด๋ฏธ์ง€
let sliderCount = slider.length; // ์ด๋ฏธ์ง€ ๊ฐฏ์ˆ˜
let sliderWidth = sliderImg.offsetWidth; // ์ด๋ฏธ์ง€ ๊ฐ€๋กœ๊ฐ’
let sliderClone = sliderInner.firstElementChild.cloneNode(true); // ์ฒซ๋ฒˆ์งธ ์ด๋ฏธ์ง€ ๋ณต์‚ฌ
sliderInner.appendChild(sliderClone); // ์ฒซ๋ฒˆ์งธ ์ด๋ฏธ์ง€๋ฅผ ๋งˆ์ง€๋ง‰ ์ž๋ฆฌ์— ๋„ฃ์–ด์คŒ
function sliderEffect(){
currentIndex++;
sliderInner.style.transition = "all 0.6s"
sliderInner.style.transform = "translateX(-"+ sliderWidth * currentIndex +"px)";
// sliderInner.style.transform = "translateX(-800px)"; 800 * 1 ๊ทœ์น™ ํŒŒ์•…ํ•˜๊ธฐ
// sliderInner.style.transform = "translateX(-1600px)"; 800 * 2
// sliderInner.style.transform = "translateX(-2400px)"; 800 * 3
// sliderInner.style.transform = "translateX(-3200px)"; 800 * 4
// sliderInner.style.transform = "translateX(-4000px)"; 800 * 5
// sliderInner.style.transform = "translateX(-4800px)"; 800 * 6
// ๋งˆ์ง€๋ง‰ ์ด๋ฏธ์ง€ ๋‹ค์Œ์— ์ฒซ๋ฒˆ์งธ ์ด๋ฏธ์ง€๊ฐ€ ๋‚˜์˜ค๋„๋ก, ๋งˆ์ง€๋ง‰ ์ด๋ฏธ์ง€์— ์œ„์น˜ํ–ˆ์„ ๋•Œ ๋ชจ๋‘ ์ดˆ๊ธฐํ™” ์‹œ์ผœ์ฃผ๊ธฐ : (6๋ฒˆ์งธ์— ์ฒซ๋ฒˆ์งธ ์ด๋ฏธ์ง€๋ฅผ ๋„ฃ์–ด์ค˜์•ผ ๋นˆ ๊ณต๊ฐ„์ด ์•ˆ ์ƒ๊น€)
// ํ˜„์žฌ ๋ณด์ด๋Š” ์ด๋ฏธ์ง€๊ฐ€
if(currentIndex == sliderCount){
// sliderInner.style.transition = "0s" // ๋งจ ๋งˆ์ง€๋ง‰์— ๋ณต์‚ฌํ•œ ์ฒซ๋ฒˆ์งธ ์ด๋ฏธ์ง€๊ฐ€ ์ „ํ™˜ํšจ๊ณผ ์—†์ด ๋œจ๊ธฐ ๋•Œ๋ฌธ์— ์–ด์ƒ‰ํ•จ. ์ด๋Ÿด ๋•Œ๋Š” setTimeout ์„ ํ™œ์šฉํ•˜๋ฉด ํ•ด๊ฒฐ๋จ
// sliderInner.style.transform = "translateX(0px)";
// setTimeout ์„ ์ด์šฉํ•˜๋ฉด ์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋‚˜์˜ค๊ณ  ๋‚˜์„œ (0.6 ์ดˆ ์ดํ›„), ์ฒซ๋ฒˆ์งธ ์ด๋ฏธ์ง€๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•จ -> ์ฒซ๋ฒˆ์งธ ์ด๋ฏธ์ง€๋กœ ๋Œ์•„๊ฐˆ ๋•Œ๋„ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ „ํ™˜ ๊ฐ€๋Šฅ
setTimeout(() => {
sliderInner.style.transition = "0s"
sliderInner.style.transform = "translateX(0px)";
}, 700); // (0.6์ดˆ ์ดํ›„์— ์‹คํ–‰ํ•˜๋„๋ก 700 ์„ ๋„ฃ์–ด์คŒ)
currentIndex = 0;
}
}
setInterval(sliderEffect, 2000);

03. ๊ฒฐ๊ณผ๋ณด๊ธฐ

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€