티스토리 뷰
//설명. 참고사항.
const cursor = document.querySelector(".cursor");
const follow = document.querySelector(".cursor-follower");
window.addEventListener("mousemove", (e) => {
//커서에 좌표 값 할당
// cursor.style.left = e.pageX -5 + "px";
// cursor.style.top = e.pageY -5 + "px";
// follow.style.left = e.pageX -15 + "px";
// follow.style.top = e.pageY -15 + "px";
//gsap 플러그인을 사용해서 좌표값 할당한 애니메이션 적용
gsap.to(cursor, {duration: .3, left: e.pageX -5, top: e.pageY -5});
gsap.to(follow, {duration: .8, left: e.pageX -15, top: e.pageY -15});
//오버효과
//span에 오버 했을 때 클래스 active를 추가 / 나갔을 때 active 삭제
document.querySelectorAll(".mouse__wrap span").forEach((el)=>{
el.addEventListener("mouseenter",()=>{ //mouseover 대신 mouseenter를 쓸 수 있음
cursor.classList.add("active"); //active 클래스 추가
follow.classList.add("active");
});
el.addEventListener("mouseleave",()=>{ //mouseout 대신 mouseleave를 쓸 수 있음
cursor.classList.remove("active"); //active 클래스 삭제
follow.classList.remove("active");
});
});
//info에 마우스 오버 했을때
document.querySelector(".title").addEventListener("mouseover",()=>{
cursor.classList.add("show"); //마우스 오버하면 show 클래스 추가
follow.classList.add("show");
});
document.querySelector(".title").addEventListener("mouseout",()=>{
cursor.classList.remove("show"); //마우스 아웃하면 show 클래스 삭제
follow.classList.remove("show");
})
//number에 마우스 오버
document.querySelector(".number").addEventListener("mouseover",()=>{
cursor.classList.add("show2"); //마우스 오버하면 show2 클래스 추가
follow.classList.add("show2");
});
document.querySelector(".number").addEventListener("mouseout",()=>{
cursor.classList.remove("show2"); //마우스 아웃하면 show2 클래스 삭제
follow.classList.remove("show2");
})
//소스보기에 마우스 오버
document.querySelector(".source-btn").addEventListener("mouseover",()=>{
cursor.classList.add("show2"); //마우스 오버하면 show2 클래스 추가
follow.classList.add("show2");
});
document.querySelector(".source-btn").addEventListener("mouseout",()=>{
cursor.classList.remove("show2"); //마우스 아웃하면 show2 클래스 삭제
follow.classList.remove("show2");
})
// 화면에 좌표값 출력
document.querySelector(".pageX").innerText = e.pageX;
document.querySelector(".pageY").innerText = e.pageY;
});
이번 예제는 gsap 플러그인을 활용한 애니메이션으로 마우스 커서 이펙트를 작업했습니다. 핵심 메서드로는
mouseover, mouseout이 있습니다. 마우스 오버와 마우스 아웃 대신 mouseenter, mouseleave를 사용할 수 있습니다.
mouseenter및 mouseover이벤트는 요소 위로 마우스를 이동하면 트리거됩니다 .
mouseenter는 마우스가 설정된 요소에 들어갈 때만 트리거됩니다. 상대 이벤트는 mouseleave 입니다.
mouseover는 마우스가 요소 또는 그 자식 중 하나에 들어갈 때 트리거됩니다 . 그것의 상대는 mouseout입니다.
'Script Sample > Mouse Effect' 카테고리의 다른 글
Mouse Effcet 06. 텍스트 효과 (0) | 2022.04.12 |
---|---|
Mouse Effcet 05. 이미지 효과 2 / Math.max(), Math.min() (0) | 2022.02.24 |
Mouse Effcet 04. 이미지 효과 / window.innerWidth,innerHeight (0) | 2022.02.24 |
Mouse Effcet 03. 마우스 조명 효과 / getBoundingClientRect() (0) | 2022.02.23 |
Mouse Effcet 01. 마우스 따라다니기 (0) | 2022.02.22 |
댓글
© 2018 webstoryboy