본문 바로가기
Front/Vue

마우스 따라오는 원

by saramnim 2024. 7. 28.
728x90

먼저 template를 작성해준다.

style은 변수로 지정해준다.

<template>
  <div class="circle" :style="circleStyle" />
</template>

 

다음으로 css를 작성해준다.

원하는 색에 원하는 크기로 작성해도 무방하다.

.circle {
  position: fixed;
  width: 20px;
  height: 20px;
  background-color: rgba(255, 255, 255, 0.5);
  border-radius: 50%;
  pointer-events: none; /* 동그라미가 클릭을 막지 않도록 설정 */
}

 

마지막으로 script를 작성해준다.

먼저, 동그라미의 위치를 저장할 반응형 변수를 생성해준다.

const circleStyle = ref({
  top: '0px',
  left: '0px',
  transform: 'translate(-50%, -50%)',
})

 

다음으로 마우스를 움직이면 top과 left가 함께 움직이도록 해준다.

function handleMouseMove(event: MouseEvent) {
  circleStyle.value.top = `${event.clientY}px`
  circleStyle.value.left = `${event.clientX}px`
}

 

컴포넌트가 마운트되면 이벤트 리스너 추가되도록 해준다.

onMounted(() => {
  window.addEventListener('mousemove', handleMouseMove)
})

 

마찬가지로 컴포넌트가 언마운트되기 전에 이벤트 리스너 제거되도록 해준다.

onBeforeUnmount(() => {
  window.removeEventListener('mousemove', handleMouseMove)
})

 

이렇게 비교적 가벼운 컴포넌트를 생성해봤다!

728x90
반응형

'Front > Vue' 카테고리의 다른 글

7-segment 타이머 만들기  (1) 2024.11.18
비/눈 오는 효과  (0) 2024.09.19
VUE3.0 흘러가는 텍스트  (1) 2024.06.14
devExtreme 사용 중 만난 에러  (0) 2024.01.16
Vue3.0 + Nuxt 프로젝트 진행 후 정리  (0) 2023.11.22

댓글

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."