본문 바로가기

js

[js]마우스 따라다니는 원 만들기

css포지션을이용 하여 마우스 이벤트 제어

<body>
  <div class="cursor"></div>
</body>

 

body{background: #fff;}

.cursor{width: 50px; height: 50px; position: absolute;; transform: translate(-50%, -50%); 
z-index: -1; background: #1ce6BA; border-radius: 50%; mix-blend-mode:darken; 
transition: transform .3s; pointer-events: none;}
.cursor.on{transform: translate(-50%, -50%) scale(2);}

 

 

$(function(){
  let cursor=$(".cursor");
  
  /* e가 왜들어가는지 아직 모르겟지만 넣으라고 해서 넣음 */
  $(window).mousemove(function(e){
    let x=e.pageX;
    let y=e.pageY;

    cursor.css("left",x)
    .css("top",y);
  });
  
  $("window").scroll(function(e){
    let x=e.pageX;
    let y=e.pageY;

    cursor.css("left",x)
    .css("top",y)

  });


  $("a, .cursor_hover").mouseenter(function(){
    cursor.addClass("on")
  })
  	//a링크가 아닌 하버이펙트가 필요한 태그에 cursor_hover클래스 추가할 것
  $("a, .cursor_hover").mouseleave(function(){
    cursor.removeClass("on")
  })
  
  /*
  귀찮지만 엔터와 리브를 구분해서 쓴 이유는 
  hover와 toggleClass로 구현햇을때 
  on인상태에서 페이지가 넘어가면 기본이 on인 상태가 되어버려서
  이를 막고자 엔터와 리브를 각각 구현함
  */
});

 

.cursor에 포지션과 point-events

→포인터이벤트를 이용하여 a링크에 지장이 없도록 구현

 

→mix-blend-mode에서 투명인 배경과 흰색의 배경에서의 구현되는 색상이 다르므로 body에 fff깔고 darken추천

 

See the Pen Untitled by sangmok-ye (@sangmok-ye) on CodePen.


top