728x90
이제야 쓰는 캐러셀 구현하기,,,
🛠️HTML
<div class="wrap">
<div class="carousel_wrap">
<div class="carousel">
<img src="../images/gosimperson 2023-06-21T215108.JPEG" alt="" />
<img src="../images/gosimperson 2023-09-14T095906.JPEG" alt="" />
<img src="../images/gosimperson 2024.JPEG" alt="" />
</div>
<div class="btnwrap">
<button class="bgColor">🖤</button>
<button class="first">화</button>
<button class="second">이</button>
<button class="third">팅</button>
<button class="prev">이전</button>
<button class="next">다음</button>
</div>
</div>
</div>
html은 대단한건 없고
이미지 세장이랑
🖤버튼을 누르면 배경이 검정색으로 바뀌는 용도 다시 누르면 흰 배경
화 - 첫번째 사진
이 - 두번째 사진
팅 - 세번째 사진
이전 다음 버튼은 한장씩 넘어간다
💅🏻CSS
* {
padding: 0;
margin: 0;
}
.wrap {
width: 100%;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
.carousel_wrap{
width: 700px;
overflow: hidden;
}
.carousel {
width: 100%;
display: flex;
transition: transform .5s ease;
}
img {
width: 100%;
}
.btnwrap {
margin-top: 10px;
}
button {
padding: 8px 18px;
font-size: 14px;
background-color: #fa5a5a;
color: white;
display: inline-block;
border: 1px solid rgba(0, 0, 0, 0.21);
border-bottom-color: rgba(0, 0, 0, 0.34);
text-shadow: 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: 0 1px 0 rgba(255, 255, 255, 0.34) inset,
0 2px 0 -1px rgba(0, 0, 0, 0.13), 0 3px 0 -1px rgba(0, 0, 0, 0.08),
0 3px 13px -1px rgba(0, 0, 0, 0.21);
}
button:active {
top: 1px;
border-color: rgba(0, 0, 0, 0.34) rgba(0, 0, 0, 0.21)
rgba(0, 0, 0, 0.21);
box-shadow: 0 1px 0 rgba(255, 255, 255, 0.89),
0 1px rgba(0, 0, 0, 0.05) inset;
position: relative;
}
버튼 스타일은 남이 만들어놓은거 스윽 가져왓다

적용하면 이렇게 생김
‼️ JS
const bgColorBtn = document.querySelector(".bgColor");
const firstBtn = document.querySelector(".first");
const secondBtn = document.querySelector(".second");
const thirdBtn = document.querySelector(".third");
const prevBtn = document.querySelector(".prev");
const next = document.querySelector(".next");
const carousel = document.querySelector(".carousel");
먼저 엘리먼트들을 선택해줍니딘
그리고 사진 순번 인덱스 변수 하나 만들기
let index = 0;
🖤버튼 누르면 뒷배경 검정색으로 바꾸기
bgColorBtn.addEventListener("click", (e) => {
if (document.body.style.backgroundColor == "black") {
document.body.style.backgroundColor = "";
} else {
document.body.style.backgroundColor = "black";
}
});
버튼 클릭했을때 뒷배경 스타일이 블랙이면 스타일 없애주시고요 아니면 블랙으로 바꿔달라
'화' 버튼 누르면 첫번째 사진으로 이동
firstBtn.addEventListener("click", () => {
index = 0;
carousel.style.transform = `translateX(-${700 * index}px)`;
});
버튼 클릭하면여 인덱스는 0이고 캐러셀로묶어둔 이미지가 가로로 이동하게 해주십셔 이미지 크기만큼 이동
'이' 버튼 누르면 두번째 사진으로 이동
secondBtn.addEventListener("click", () => {
index = 1;
carousel.style.transform = `translateX(-${700 * index}px)`;
});
얘는 버튼 클릭하면 인덱스는 1입니더
나머지는 동일
'팅' 버튼 누르면 세번째 사진으로 이동
thirdBtn.addEventListener("click", () => {
index = 2;
carousel.style.transform = `translateX(-${700 * index}px)`;
});
동일
이전,다음 버튼
next.addEventListener("click", () => {
if (index === 2) return;
index +=1;
carousel.style.transform = `translateX(-${700 * index}px)`;
});
prevBtn.addEventListener("click",()=>{
if(index === 0) return;
index -= 1;
carousel.style.transform = `translateX(-${700 * index}px)`;
})
next 버튼 클릭하면 클릭할때마다 인덱스를 1씩 증가 인덱스가 2와 같다면 더 이상 오른쪽으로 넘어가지 않음
prev버튼 클릭하면 클릭할때마다 인덱스를 1씩 감소 인덱스가 0과 같다면 더 이상 왼쪽으로 넘어가지 않는다.
전체코드
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
* {
padding: 0;
margin: 0;
}
.wrap {
width: 100%;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
.carousel_wrap{
width: 700px;
overflow: hidden;
}
.carousel {
width: 100%;
display: flex;
transition: transform .5s ease;
}
img {
width: 100%;
}
.btnwrap {
margin-top: 10px;
}
button {
padding: 8px 18px;
font-size: 14px;
background-color: #fa5a5a;
color: white;
display: inline-block;
border: 1px solid rgba(0, 0, 0, 0.21);
border-bottom-color: rgba(0, 0, 0, 0.34);
text-shadow: 0 1px 0 rgba(0, 0, 0, 0.15);
box-shadow: 0 1px 0 rgba(255, 255, 255, 0.34) inset,
0 2px 0 -1px rgba(0, 0, 0, 0.13), 0 3px 0 -1px rgba(0, 0, 0, 0.08),
0 3px 13px -1px rgba(0, 0, 0, 0.21);
}
button:active {
top: 1px;
border-color: rgba(0, 0, 0, 0.34) rgba(0, 0, 0, 0.21)
rgba(0, 0, 0, 0.21);
box-shadow: 0 1px 0 rgba(255, 255, 255, 0.89),
0 1px rgba(0, 0, 0, 0.05) inset;
position: relative;
}
</style>
</head>
<body>
<div class="wrap">
<div class="carousel_wrap">
<div class="carousel">
<img src="../images/gosimperson 2023-06-21T215108.JPEG" alt="" />
<img src="../images/gosimperson 2023-09-14T095906.JPEG" alt="" />
<img src="../images/gosimperson 2024.JPEG" alt="" />
</div>
<div class="btnwrap">
<button class="bgColor">🖤</button>
<button class="first">화</button>
<button class="second">이</button>
<button class="third">팅</button>
<button class="prev">이전</button>
<button class="next">다음</button>
</div>
</div>
</div>
<script>
const bgColorBtn = document.querySelector(".bgColor");
const firstBtn = document.querySelector(".first");
const secondBtn = document.querySelector(".second");
const thirdBtn = document.querySelector(".third");
const prevBtn = document.querySelector(".prev");
const next = document.querySelector(".next");
const carousel = document.querySelector(".carousel");
let index = 0;
// 배경 색
bgColorBtn.addEventListener("click", (e) => {
if (document.body.style.backgroundColor == "black") {
document.body.style.backgroundColor = "";
} else {
document.body.style.backgroundColor = "black";
}
});
firstBtn.addEventListener("click", () => {
index = 0;
carousel.style.transform = `translateX(-${700 * index}px)`;
});
secondBtn.addEventListener("click", () => {
index = 1;
carousel.style.transform = `translateX(-${700 * index}px)`;
});
thirdBtn.addEventListener("click", () => {
index = 2;
carousel.style.transform = `translateX(-${700 * index}px)`;
});
next.addEventListener("click", () => {
if (index === 2) return;
index +=1;
carousel.style.transform = `translateX(-${700 * index}px)`;
});
prevBtn.addEventListener("click",()=>{
if(index === 0) return;
index -= 1;
carousel.style.transform = `translateX(-${700 * index}px)`;
})
</script>
</body>
</html>
결과
참고
완전 초 단순하게 캐러셀(Carousel) 구현해보기
캐러셀(Carousel) 캐러셀이라는 용어가 조금 생소하실 수도 있는데요 캐러셀은 여러개의 이미지 혹은 영상을 슬라이더 형태로 만들어 표현해주는 것을 말합니다. 바로 위 움짤처럼 말이죠! 정말
junjangsee.tistory.com
'JavaScript' 카테고리의 다른 글
| 미니 프로젝트 - 아이스크림 퀴즈 만들기 (1) | 2024.01.22 |
|---|---|
| 카운트 다운 타이머 만들기 (0) | 2024.01.10 |