HTML,CSS, JS/JavaScript
[JavaScript] 16. 이벤트 처리 - 배너 변경하기
Song hyun
2024. 8. 1. 10:34
728x90
반응형
[JavaScript] 16. 이벤트 처리 - 배너 변경하기
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.flex-container{
display: flex;
height: 400px;
/*이미지가 벗어나는 부분 숨기기*/
overflow: hidden;
}
.flex-item{
flex:1;
display: flex;
justify-content: center;
position: relative;
}
.flex-item img{
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
}
</style>
</head>
<body>
<div class="flex-container">
<div class="flex-item">
<button class="button prev-btn">prev</button>
</div>
<div class="flex-item">
<img src="../ch01/images/image1.png" alt="">
<img src="../ch01/images/image2.png" alt="">
</div>
<div class="flex-item">
<button class="button next-btn">next</button>
</div>
</div>
<script>
let images = document.querySelectorAll(".flex-item img");
let currentIndex=0;
document.querySelector(".prev-btn").addEventListener('click',()=>{
console.log("prev 이벤트 확인");
});
document.querySelector(".next-btn").addEventListener('click',()=>{
console.log("next 이벤트 확인");
});
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.flex-container{
display: flex;
height: 400px;
/*이미지가 벗어나는 부분 숨기기*/
overflow: hidden;
}
.flex-item{
flex:1;
display: flex;
justify-content: center;
position: relative;
}
.flex-item img{
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
visibility:hidden;
}
.flex-item img.active{
opacity:0;
visibility:visible;
}
</style>
</head>
<body>
<div class="flex-container">
<div class="flex-item">
<button class="button prev-btn">prev</button>
</div>
<div class="flex-item">
<img class="active src="../ch01/images/image1.png" alt="">
<img src="../ch01/images/image2.png" alt="">
</div>
<div class="flex-item">
<button class="button next-btn">next</button>
</div>
</div>
<script>
let images = document.querySelectorAll(".flex-item img");
let currentIndex=0;
// 방어적 코드 작성
document.querySelector(".prev-btn").addEventListener('click',()=>{
// 현재 active 클래스를 가진 이미지를 제거
image[currentIndex].classLisr.remove("active");
currentIndex=currentIndex-1;
if(currentIndec<0){
currentIndex+=images.length;
}
// 새로운 currentIndex 값으로 지정된 녀석을 활용해서 해당 이미지에 클래스 속성 active를 추가한다.
imagse[currentIndex].classList.add("active");
});
document.querySelector(".next-btn").addEventListener('click',()=>{
// 현재 active 클래스를 가진 이미지를 제거
images[currentIndex].classList.remove("active");
currentIndex=currentIndex+1;
if(currentIndex>images.length-1){
currentIndex-=images.length;
}
images[currentIndex].classList.add("active");
});
</script>
</body>
</html>
728x90
반응형