์ด๋ฏธ์ง ์ฌ๋ผ์ด๋ : ์ข์ธก์ผ๋ก ์์ง์ด๊ธฐ
์ด๋ฒ ์๊ฐ์๋ 2์ด ์ง๋ ๋๋ง๋ค ์ข์ธก์ผ๋ก ์ด๋ฏธ์ง๊ฐ ๋ฐ๋๋ ์ฌ๋ผ์ด๋ ํ์์ ํ์ด์ง๋ฅผ ์์ ํด๋ณด๊ฒ ์ต๋๋ค.๐
#1. HTML / CSS ์ค์ ํ๊ธฐ
! HTML TIP !
๊ฐ ์ด๋ฏธ์ง๋ง๋ค css์ค์ ์ ์ฃผ๊ธฐ ์ํด ๋ฐ๋ก ๋ถ๋ชจ๋ฅผ 2๋ฒ ๊ฐ์ธ์ ๋ฌถ์ด์ค๋๋ค.
โ๏ธ HTML ์คํฌ๋ฆฝํธ ๋ณด๊ธฐ
<section id="sliderType02">
<div class="slider__wrap">
<div class="slider__img">
<div class="slider__inner">
<div class="slider">
<img src="../assets/img/Mountian_bg01.jpg" alt="์ด๋ฏธ์ง6">
</div>
<div class="slider">
<img src="../assets/img/Mountian_bg02.jpg" alt="์ด๋ฏธ์ง7">
</div>
<div class="slider">
<img src="../assets/img/Mountian_bg03.jpg" alt="์ด๋ฏธ์ง8">
</div>
<div class="slider">
<img src="../assets/img/Mountian_bg04.jpg" alt="์ด๋ฏธ์ง9">
</div>
<div class="slider">
<img src="../assets/img/Mountian_bg05.jpg" alt="์ด๋ฏธ์ง10">
</div>
</div>
</div>
</div>
</section>
! CSS TIP !
์ด๋ฏธ์ง๋ฅผ ๊ฐ๋ก๋ก ์ฐ๊ฒฐํ๊ธฐ ์ํด ํฌ์ง์
์ relative๋ก ์ค์ ํ๊ณ ์์ญ์์ ๋ฒ์ด๋๋ ์ด๋ฏธ์ง๋ฅผ ์๋ณด์ด๊ฒ ์ฒ๋ฆฌํ๊ธฐ ์ํด overflow: hidden์ ์ค์ ํด์ค๋๋ค.
โ๏ธ CSS ์คํฌ๋ฆฝํธ ๋ณด๊ธฐ
/* slider */
.slider__wrap {
width: 100%;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
}
.slider__img { /* ์ด๋ฏธ์ง๊ฐ ๋ณด์ด๋ ์์ญ */
position: relative;
width: 800px;
height: 450px;
overflow: hidden;
}
.slider__inner {/* ์ ์ฒด ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ธ๊ณ ์๋ ๋ถ๋ชจ : ์์ง์ด๋ ๋ถ๋ถ ์์ฑ์ฃผ๊ธฐ */
display: flex;
flex-wrap: wrap;
width: 4000px;
}
.slider { /* ๊ฐ๋ณ์ ์ธ ์ด๋ฏธ์ง (๊ฐ๊ฐ์ ์ด๋ฏธ์ง ์ค์ ) */
position: relative;
width: 800px;
height: 450px;
}
.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: '์ด๋ฏธ์ง6';}
.slider:nth-child(2)::before {content: '์ด๋ฏธ์ง7';}
.slider:nth-child(3)::before {content: '์ด๋ฏธ์ง8';}
.slider:nth-child(4)::before {content: '์ด๋ฏธ์ง9';}
.slider:nth-child(5)::before {content: '์ด๋ฏธ์ง10';}
/* ์ฌ๋ผ์ด๋๊ฐ ํฌ์ง์
์ผ๋ก ๊ณ ์ ๋์ด ์๊ธฐ ๋๋ฌธ์ ์์น ๋ฐ๊ฟ์ฃผ๊ธฐ */
.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: 250px;
}
}
#2. JAVASCRIPT : ์คํฌ๋ฆฝํธ ์ง๊ธฐ
setInterval()์ ํตํด ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํด๋ณด์!
์๋์ ์ฝ๋ ์ ์ฃผ์๊ณผ ํจ๊ป ์คํฌ๋ฆฝํธ๋ฅผ ์ดํดํด๋ณด๋๋ก ํฉ์๋ค:)
๐ก ์ ์ฒด ์คํฌ๋ฆฝํธ ๋ณด๊ธฐ
{
//์ ํ์
const sliderWrap = document.querySelector(".slider__wrap");
const sliderImg = sliderWrap.querySelector(".slider__img"); //๋ณด์ฌ์ง๋ ์์ญ
const sliderInner = sliderWrap.querySelector(".slider__inner"); //์์ง์ด๋ ์์ญ
const slider = sliderWrap.querySelectorAll(".slider"); //์ด๋ฏธ์ง
let currentIndex = 0; //ํ์ฌ ์ด๋ฏธ์ง
let sliderCount = slider.length; //์ด๋ฏธ์ง ๊ฐฏ์
sliderInner.style.transition = "all 0.6s"; //์ด๋ฏธ์ง ์ฌ๋ผ์ด๋ ์ ๋๋ฉ์ด์
ํจ๊ณผ
//sliderInner.style.transform += "translateX(0px)"; -800 * 0
//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 : 800์ ์ด๋ฏธ์ง์ width๊ฐ์ด๋ค.
// //์ด๋ฏธ์ง ์์ง์ด๊ธฐ ์กฐ๊ฑด๋ฌธ ver.
setInterval(()=> {
if(currentIndex < slider.length -1){ //์์ง์ด๋ ์์ญ์ธ sliderInner๋ ์์ญ์ด ํ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๊ฐ์ ์ด๋ฏธ์ง๊ฐ ์์ง์ด๋๋ก ์ฌ๋ผ์ด๋์ ์ด ๊ธธ์ด๋ฅผ ์์ ์จ์ฃผ์ด์ผ ํ๋ค.
//์ฌ๋ผ์ด๋์ ๊ธธ์ด๊ฐ 4์ด๊ณ currentIndex๊ฐ 4๋ณด๋ค ์์ ๋ ํ๋์ฉ ์ฌ๋ฆฌ๊ธฐ (์ธ๋ฑ์ค๋ผ 0๋ถํฐ ์ธ๊ธฐ ๋๋ฌธ์ 0~4 = 5๊ฐ์ ์ด๋ฏธ์ง๊ฐ ๋๊ธฐ ๋๋ฌธ.)
currentIndex ++;
//์๋ ๊ฒฝ์ฐ ๋ค์ 0์ผ๋ก ๋์์ค๋๋ก ํ๋ค.
} else {
currentIndex = 0;
}
//์กฐ๊ฑด๋ฌธ์ ํตํด currentIndex๊ฐ ๋ง์ง๋ง ์ด๋ฏธ์ง์์ ์ฒ์ ์ด๋ฏธ์ง๋ก ๋ค์ ๋์์ค๋๋ก ์ค์ ํด์ค ๋ค css์์ฑ์ ์ฌ์ฉํ์ฌ ๊ณ์ ๋ฐ๋ณต๋๋๋ก ์ค์ ํ๋ค.
sliderInner.style.transform = "translateX("+ -800 * currentIndex + "px)";
},2000);
}
{
//์ด๋ฏธ์ง ์์ง์ด๊ธฐ ๋๋์
ver. : ์ ์ผ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ
const sliderInner = document.querySelector(".slider__inner");
const slider = document.querySelectorAll(".slider");
let currentIndex = 0;
sliderInner.style.transition = "all 0.6s";
setInterval(()=> {
currentIndex = (currentIndex +1) % slider.length;
sliderInner.style.transform = "translateX("+ -800 * currentIndex +"px)";
},2000);
}
{
//GASP : ์น ์์ค๋ฅผ ์ด์ฉํ ์์
: ๊ฐ๋จ ๋ฐฉ๋ฒ
src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.0/gsap.min.js" //๋ผ์ด๋ธ๋ฌ๋ฆฌ
const slider = document.querySelectorAll(".slider");
let currentIndex = 0;
setInterval(() => {
currentIndex = (currentIndex + 1) % slider.length;
gsap.to(".slider__inner", {
x : -800 * currentIndex
});
},2000);
}
{
//JQuery : ๋๋ถ๋ถ์ ํผ๋ธ๋ฆฌ์
๊ฐ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด์ง๋ง ๋น์ถ. ์ ์ด์ฟผ๋ฆฌ์ ์ฌ์ฉ์ฑ์ด ๋จ์ด์ง๋ ์ถ์ธ.
src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" //๋ผ์ด๋ธ๋ฌ๋ฆฌ
let currentIndex = 0;
setInterval(() => {
currentIndex = (currentIndex + 1) % $(".slider").length;
$(".slider__inner").css("position", "relative");
$(".slider__inner").animate({ left : -800 * currentIndex }, 600);
},2000);
}
โ๏ธ ์คํฌ๋ฆฝํธ ๋ณด๊ธฐ : ์๋ฐ์คํฌ๋ฆฝํธ
์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ์์ฑํ ์คํฌ๋ฆฝํธ ์
๋๋ค.
1. ๋จผ์ ์ง๊ธ๊น์ง ํ๋ ๋ฐฉ์๊ณผ ๋๊ฐ์ด ์คํฌ๋ฆฝํธ์ ํ์ํ ์ ํ์๋ฅผ ์ค์ ํด์ฃผ๊ณ ํ์ฌ ๋ณด์ฌ์ผํ ์ด๋ฏธ์ง์๊ฒ 0์ ๋ถ์ฌํ์ฌ ์ฒซ ์์๊ฐ ๋๊ฒ ํฉ๋๋ค.
2. ์ด๋ฏธ์ง๋ฅผ ๋ถ๋๋ฝ๊ฒ ๋์ด๊ฐ๊ฒ ํ๊ธฐ ์ํด ์คํฌ๋ฆฝํธ๋ก css ์์ฑ์ธ transition = "all 0.6s"์ ์ค์ ํด์ค๋๋ค.
3. setInterval()๋ฅผ ํตํด slider.length(์ด ์ด๋ฏธ์ง ๊ฐฏ์)๋งํผ ๋ง ๋ณด์ด๊ฒ ํ๊ณ 4๊น์ง ๊ฐ์ ๋ ๋ค์ ๋๋์๊ฐ๋๋ก ์ค์ ํฉ๋๋ค.
4. ์คํฌ๋ฆฝํธ๋ก css์ transform ์์ฑ์ ์ฌ์ฉํ์ฌ 2์ด๋ง๋ค X์ถ(translateX) ๋ฐฉํฅ์ผ๋ก -800px์ฉ ์ด๋ฏธ์ง๊ฐ ์ด๋ํ๊ฒ ํด์ค๋๋ค.
const sliderInner = document.querySelector(".slider__inner");
const slider = document.querySelectorAll(".slider");
let currentIndex = 0;
sliderInner.style.transition = "all 0.6s";
setInterval(()=> {
currentIndex = (currentIndex +1) % slider.length;
sliderInner.style.transform = "translateX("+ -800 * currentIndex +"px)";
},2000);
โ๏ธ ์คํฌ๋ฆฝํธ ๋ณด๊ธฐ : GSAP
GSAP ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์คํฌ๋ฆฝํธ๋ก ์๋ฐ์คํฌ๋ฆฝํธ๋ณด๋ค ๊ฐ๋ ์ฑ์ด ์ข๊ณ ๊ฐํธํฉ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋งํฌ๋ฅผ ๋ถ์ธ ํ ์คํ์ผ ๋ฐ ์ ๋๋ฉ์ด์ ์ ์ฝ๊ฒ ์ ์ฉํ ์ ์์ต๋๋ค.
src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.0/gsap.min.js" //๋ผ์ด๋ธ๋ฌ๋ฆฌ
const slider = document.querySelectorAll(".slider");
let currentIndex = 0;
setInterval(() => {
currentIndex = (currentIndex + 1) % slider.length;
gsap.to(".slider__inner", {
x : -800 * currentIndex
});
},2000);
โ๏ธ ์คํฌ๋ฆฝํธ ๋ณด๊ธฐ : JQuery
์ ์ด์ฟผ๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑํด์ค๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ณด๋ค ๊ฐ๋
์ฑ์ ์ข์ง๋ง ํ์ฌ ์ฌ์ฉ์ฑ์ด ๋จ์ด์ง๋ ์ถ์ธ ์
๋๋ค.
$()๋ก ์ ํ์ ๋ฐ css ์์ฑ์ ์ค์ ํ ์ ์์ต๋๋ค.
src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" //๋ผ์ด๋ธ๋ฌ๋ฆฌ
let currentIndex = 0;
setInterval(() => {
currentIndex = (currentIndex + 1) % $(".slider").length;
$(".slider__inner").css("position", "relative");
$(".slider__inner").animate({ left : -800 * currentIndex }, 600);
},2000);
#4. ๊ฒฐ๊ณผ ๋ณด๊ธฐ
'EFFECT' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[EFFECT] ๋ง์ฐ์ค ํจ๊ณผ 01 : ์ปค์ ๋ฐ๋ผ๋ค๋๊ธฐ (1) | 2022.09.06 |
---|---|
[EFFCET] ์ด๋ฏธ์ง : ์ฌ๋ผ์ด๋ ์ ํ03 (12) | 2022.09.02 |
[EFFECT] ์ด๋ฏธ์ง : ์ฌ๋ผ์ด๋ ์ ํ01 (2) | 2022.08.30 |
[QUIZ] ํด์ฆ ๋ง๋ค๊ธฐ06 : ์ฌ๋ผ์ด๋ ํ์ (3) | 2022.08.25 |
[QUIZ] ํด์ฆ ๋ง๋ค๊ธฐ05 : ๊ฐ๊ด์ 60๋ฌธ์ (4) | 2022.08.25 |
๋๊ธ