본문 바로가기
DEVELOPMENT

javascript mouse event 처리

by Z@__ 2020. 8. 6.
반응형

nomad 코더 챌린지 중 javascript mouse event 처리를 하게 되었다.

출처 : https://nomadcoders.co/c/vanillajs-challenge

다음과 같은 결과를 만드는 것이 문제였다. (자세한 내용은 https://nomadcoders.co/javascript-for-beginners 해당 강의 참조)

 

이를 위해 마우스 이벤트를 어떻게 처리하는지 보았다. 

index.html

<!DOCTYPE html>
<html>
  <head>
    <title>Something</title>
    <link href="index.css" rel="stylesheet" />
  </head>
  <body>
    <h1 id="title">Hello!</h1>
    <script src="index.js"></script>
  </body>
</html>

index.css

body{
  background-color: peru;
}

h1{
  color: white
}

#title{
  
}

index.js

const title = document.querySelector("#title");

function handleClick(){
  title.style.color = "blue";
}

title.addEventListener("click",handleClick);

이렇게 실행하면 title에 click이라는 이벤트가 발생했을 때 글자 색을 blue로 바꾸게 된다.

이 때, 난 특별한 처리를 해준 것이 없는데 left click event를 어떻게 인식했는지 궁금했다.

그래서 찾아봤더니 다음과 같은 이벤트 처리 기능이 있었다.

Mouse events

이 중 click : A pointing device button has been pressed and release on an element. 라는 기능이 있었다. 이거 이용해서 처리가 된 것이였다. 그래서 해당 챌린지를 수행하기 위해 click, mouseenter(해당 객체에 마우스가 올라간 경우), mouseleave(해당 체에서 마우스가 나간 경우)를 이용해서 처리할 수 있었다. ( https://developer.mozilla.org/en-US/docs/Web/Events#Mouse_events)

 

그런데 아무리 찾아봐도 mouserightclick이라는 이벤트가 없었다. 그래서 다음 링크를 참조하여 해결하였다.

https://www.w3schools.com/jsref/event_button.asp

해당 코드는 아래에 첨부!

index.js

function whichclick(event){
  // alert("You pressed : " + event.button)
  if (event.button === 0){
    title.innerHTML = "That was left click!"
    title.style.color = 'red'
  }else if (event.button === 2){
    title.innerHTML = "That was right click!"
    title.style.color = 'yellow'
  } else {
    title.innerHTML = "That was middle click!"
    title.style.color = 'orange'
  }
}

window.addEventListener("mousedown",whichclick)

이렇게 mousedown이벤트 중에  button:0 -> 왼쪽클릭, button:1 ->  가운데클릭, button:2 -> 오른쪽클릭으로 핸들링 할 수 있었다.

아래 내용은 참고!!

Keyboard events

Drag & Drop event

 

다음은 resize기능이 필요했다. 아래 코드 참고

index.js

function handleResize(event) {
  title.innerHTML = "You just resized!"
  title.style.color = 'purple'
}

window.addEventListener("resize", handleResize)

 생각보다 간단하게 처리가 된다. 

 

최종 결과물

https://repl.it/@younggilkwoun/ForestgreenSevereFan

 

반응형

'DEVELOPMENT' 카테고리의 다른 글

vscode markdown 미리보기  (1) 2020.08.25
airbnb js style guide  (0) 2020.08.18
pycharm browser remote host remoteftp  (1) 2020.07.21
proxy 설정하기  (0) 2020.04.28
npm nodemon  (0) 2020.03.17

댓글