document.querySelector("#box").textContent="마우스 휠을 위로 올렸습니다.";
}
})
</script>
휠에다가 이벤트를 주고 해당 이벤트를 if 구문을 사용해서 작업할 수 있다
<style>
#box{
width: 500px; height: 400px;
border: 1pxsolidrgba(0,0,0,0.2);
background: skyblue;
margin: 100px;
transition: 0.3s;
}
.active{
transform: scale(1.5);
}
</style>
또 다른 활용 예제로는 휠을 사용해 active 클래스를 넣었다 뺏다 하도록 할 것이다.
<script>
letbox=document.querySelector("#box");
box.addEventListener("wheel", (e)=>{
if(e.deltaY>0){//양수 즉 휠을 아래로
box.classList.add("active")
}else{
box.classList.remove("active");
}
})
</script>
이 또한 if 구문을 활용할 수 있다.
<body>
<divid="wrap">
<headerid="header"></header>
<mainid="container">
<sectiondata-idx="0">
<h2>SECTION1</h2>
</section>
<sectiondata-idx="1">
<h2>SECTION2</h2>
</section>
<sectiondata-idx="2">
<h2>SECTION3</h2>
</section>
<sectiondata-idx="3">
<h2>SECTION4</h2>
</section>
</main>
<footerid="footer"></footer>
</div>
섹션으로 구조를 잡고 마우스 휠이 움직일때 섹션에 맞게 이동하도록 할 것이다.
<style>
*{
margin: 0; padding: 0;
box-sizing: border-box;
}
a{
text-decoration: none;
color: inherit;
}
ul{
list-style: none;
}
#header{
height: 100px; width: 100%;
background: rgba(0,0,0,0.7);
position: absolute;
left: 0;top: 0;
z-index: 999;
}
#footer{
height: 300px; background: #444 ;
}
section{
height: 100vh;
padding: 100px0;
}sectionh2{
font-size: 100px;
color: #fff;
text-align: center;
}
section:nth-child(1){background: tomato;}
section:nth-child(2){background: gold;}
section:nth-child(3){background: aquamarine;}
section:nth-child(4){background: dodgerblue;}
</style>
먼저 각 섹션을 변수로 선언하고 선언한 변수의 높이값을 innerHeight로 잡아준다. 그리고 해당 변수를 console에 불러보면 해당 높이 값이 불러지게 된다. 여기서 해당 섹션을 속성과 높이가 같기때문에 forEach 구문을 활용해서 잡아주도록 한다.
letsections=document.querySelectorAll("section");
letsecH=window.innerHeight;
console.log(secH)
sections.forEach((sec)=>{
sec.addEventListener("wheel", (e)=>{
letindex=e.currentTarget.getAttribute("data-idx")
//this가 아닌 currentTarget으로 해당 변수를 정확히 지정해주어야 한다.
console.log(typeof(index));
if(e.deltaY>0){
page=index+1
if(page>3){page=3}
}else{
page=index-1
if(page<=0){page=0}
}
//secH*0, secH*1, secH*2, secH*3
window.scrollTo({top:secH*page, behavior:"smooth"})//각 페이지의 인덱스 번호를 기입하도록 하여서 연산자로 계산해 이벤트가 진행되도록 한다.
})
})
각각 섹션에 sec라는 변수를 새롭게 선언해주고 해당 변수에 휠을 사용한 이벤트를 지정해준다. 그리고 해당 변수를 this로 지정하게 되면 여러 변수이기 때문에 오류가 발생할 수 있어서 currentTatget으로 정확하게 지정해주고 해당 인덱스 번호를 불러온다.
해당 인덱스 번호가 들어가는지 콘솔로 확인하는데 typeof 속성을 사용해서 인덱스를 불러오도록 한다. 그리고 if 구문을 사용해서 휠을 내릴때의 값과 올릴때의 높이 값을 연산식으로 넣어주는데 각각 인덱스 번호에서 1을 더하거나 빼는데 이유는 화면 맨아래에 고정되어야 하기 때문이다.