์๋ฐ์คํฌ๋ฆฝํธ ์ฌ๋ผ์ด๋ ํจ๊ณผ : ์ข๋ก ์์ง์ด๋ ์ ํ(์ฐ์์ )
์๋ฐ์คํฌ๋ฆฝํธ์ ๋ค์ํ ํจ๊ณผ๋ค ์ค, CSS์ ํธ๋์ง์ ์์ฑ์ ํ์ฉํ ์ด๋ฏธ์ง ์ฌ๋ผ์ด๋ ํจ๊ณผ์ ๋๋ค. ์ด๋ฒ ์ ํ์ ๋ง์ง๋ง ์ด๋ฏธ์ง์ ๋๋ฌํด๋, ์ฒ์ ์ด๋ฏธ์ง๋ก ๋์๊ฐ์ง ์๊ณ ์ฐ์์ ์ผ๋ก ์ด๋ฏธ์ง๊ฐ ๋ํ๋๋ ์ ํ์ ๋๋ค.
HTML ์์ค
HTML๋ก ๋ผ๋๋ฅผ ๋จผ์ ์ก์์ค๋๋ค. section ํ๊ทธ ์์๋ ํด๋์ค๋ช ์ด slider__wrap์ธ div ๋ฐ์ค, ๊ทธ ์์๋ ํด๋์ค๋ช ์ด slider__img์ธ div ๋ฐ์ค๋ฅผ ๋ง๋ค์ด ์ฃผ๊ณ , ๊ทธ ์์๋ slider__inner ๋ฐ์ค, ๊ทธ ์ slider ๋ฐ์ค ์์๋ ๊ฐ๊ฐ ์ด๋ฏธ์ง 5์ฅ์ ์ฝ์ ํด ์ฃผ์์ต๋๋ค. ๊ฐ๊ฐ์ div ๋ฐ์ค์ ์ฉ๋๋ CSS ์์ค์์ ์ถ๊ฐ๋ก ์ค๋ช ํ๋๋ก ํ๊ฒ ์ต๋๋ค. ๊ถ๊ธํ๋ฉด ๋ณด์๋ ๊ฐ...
<section id="sliderType03">
<div class="slider__wrap">
<div class="slider__img">
<div class="slider__inner">
<div class="slider">
<img src="../assets/img/effect_bg11-min.jpg" alt="์ด๋ฏธ์ง1">
</div>
<div class="slider">
<img src="../assets/img/effect_bg12-min.jpg" alt="์ด๋ฏธ์ง2">
</div>
<div class="slider">
<img src="../assets/img/effect_bg13-min.jpg" alt="์ด๋ฏธ์ง3">
</div>
<div class="slider">
<img src="../assets/img/effect_bg14-min.jpg" alt="์ด๋ฏธ์ง4">
</div>
<div class="slider">
<img src="../assets/img/effect_bg15-min.jpg" alt="์ด๋ฏธ์ง5">
</div>
</div>
</div>
</div>
</div>
</section>
CSS ์์ค
/* slider */
.slider__wrap {
width: 100%;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
}
.slider__img { /* ์ด๋ฏธ์ง ๋ณด์ด๋ ์์ญ */
position: relative;
width: 800px;
height: 520px;
overflow: hidden;
}
.slider__inner { /* ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ธ๊ณ ์๋ ๋ถ๋ชจ(์์ง์ด๋ ๋ถ๋ถ) */
display: flex;
flex-wrap: wrap;
width: 4800px;
height: 520px;
}
.slider { /* ๊ฐ๋ณ์ ์ธ ์ด๋ฏธ์ง */
position: relative;
width: 800px;
height: 520px;
}
.slider::before{
position: absolute;
left: 5px;
top: 5px;
background: rgba(0,0,0,0.4);
color: #fff;
padding: 5px 10px;
}
.slider:nth-child(1)::before {content: '์ด๋ฏธ์ง1';}
.slider:nth-child(2)::before {content: '์ด๋ฏธ์ง2';}
.slider:nth-child(3)::before {content: '์ด๋ฏธ์ง3';}
.slider:nth-child(4)::before {content: '์ด๋ฏธ์ง4';}
.slider:nth-child(5)::before {content: '์ด๋ฏธ์ง5';}
.slider:nth-child(6)::before {content: '์ด๋ฏธ์ง1';}
.slider:nth-child(1) {z-index: 5;}
.slider:nth-child(2) {z-index: 4;}
.slider:nth-child(3) {z-index: 3;}
.slider:nth-child(4) {z-index: 2;}
.slider:nth-child(5) {z-index: 1;}
@media (max-width: 800px){
.slider__img {
width: 400px;
height: 260px;
}
}
JAVASCRIPT ์์ค
์๋ฐ์คํฌ๋ฆฝํธ๋ก๋ ๋จผ์ ์ ํ์๋ฅผ ๋ง๋ค์ด ์ฃผ์์ต๋๋ค. ์ดํ currentIndex๋ผ๋ ๋ณ์๋ฅผ ์ ์ธํ๊ณ , cloneNode() ๋ฉ์๋๋ฅผ ์ด์ฉํด ์ฒซ ๋ฒ์งธ ์ด๋ฏธ์ง๊ฐ ๋ง์ง๋ง์ ๋ค์ด๊ฐ ์ ์๋๋ก ์์ ํด ์ฃผ์์ต๋๋ค. ์ดํ, setInterval์ ์ฌ์ฉํ์ฌ 2์ด๋ง๋ค currentIndex์ ๊ฐ์ด 1์ฉ ์ฆ๊ฐํ๋๋ก ํ๊ณ , ํด๋น ๊ฐ์ด ์ด ์ด๋ฏธ์ง์ ๊ฐ์์ ๋๋ฌํ๋ฉด ์ฒ์์ผ๋ก ๋์๊ฐ๋๋ก ์์ ํด ์ฃผ์์ต๋๋ค. ์ด๋ฏธ์ง๋ ๋ถ๋ช ์ฒ์์ผ๋ก ๋ค์ ๋์๊ฐ๋ ์ ๋๋ฉ์ด์ ์ ์ทจํ์ง๋ง, ์๋๋ฅผ ๋น ๋ฅด๊ฒ ์กฐ์ ํจ์ผ๋ก์จ ์ฐ์์ ์ผ๋ก ์์ง์ด๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ํ๋ ํจ๊ณผ์ ๋๋ค.
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
// ๋ง์ง๋ง ์ฌ์ง์ ์์นํ์ ๋
if(currentIndex == sliderCount){
setTimeout(() => {
sliderInner.style.transition = "0s";
sliderInner.style.transform = "translateX(0px)";
}, 700);
currentIndex = 0;
}
}
setInterval(sliderEffect, 2000);
๊ฒฐ๊ณผ
'Javascript Effect' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฐ์คํฌ๋ฆฝํธ ํจ๋ด๋์ค ํจ๊ณผ : ๋ฉ๋ด ์ด๋ (9) | 2022.09.06 |
---|---|
์๋ฐ์คํฌ๋ฆฝํธ ๋ง์ฐ์ค ํจ๊ณผ : ๋ง์ฐ์ค ๋ฐ๋ผ๋ค๋๊ธฐ (2) | 2022.09.06 |
์๋ฐ์คํฌ๋ฆฝํธ ์ฌ๋ผ์ด๋ ํจ๊ณผ : ์ข๋ก ์์ง์ด๋ ์ ํ (10) | 2022.08.29 |
์๋ฐ์คํฌ๋ฆฝํธ ์ฌ๋ผ์ด๋ ํจ๊ณผ : transition (8) | 2022.08.29 |
์๋ฐ์คํฌ๋ฆฝํธ ํด์ฆ ํจ๊ณผ : ๊ฐ๊ด์(์ฌ๋ฌ ๋ฌธ์ ์ ํ) : ์ฌ๋ผ์ด๋ ํ์ (11) | 2022.08.24 |
๋๊ธ