본문 바로가기
Effect

마우스 이펙트 01

by 🐬마뇽뇽 마뇽🦄 2022. 9. 5.
728x90

마우스 이펙트 01

마우스의 위치를 알려주며, 특정 위치 위에 마우스를 hover 하였을 때 커서가 변화하는 이펙트를 제작하였습니다.

01. HTML

글귀에 마우스 포인터가 올라가 있을 때, 반응을 주기 위해 span으로 p 태그를 감쌌습니다.

<main id="main">
    <section id="mouseType">
        <div class="mouse__cursor"></div>
        <div class="mouse__wrap">
        <p class="Nix">Numbing the <span class="style1">pain</span> for a while will <span class="style2">make it worse</span> when you <span class="style3">finally feel it.</span> </p>
        <p class="arir"><span class="style4">고통</span>을 잠시라도 <span class="style5">모른 척</span>하면, 나중에 정말 고통을 느낄 때 더 <span class="style6">악화되는 법</span>이란다.</p>
        </div>
    </section>

    <div class="mouse__info">
        <ul>
        <li>clientX : <span class="clientX">0</span> px </li>
        <li>clientY : <span class="clientY">0</span> px </li>
        <li>offsetX : <span class="offsetX">0</span> px </li>
        <li>offsetY : <span class="offsetY">0</span> px </li>
        <li>pageX : <span class="pageX">0</span> px </li>
        <li>pageY : <span class="pageY">0</span> px </li>
        <li>screenX : <span class="screenX">0</span> px </li>
        <li>screenY : <span class="screenY">0</span> px </li>
        </ul>
    </div>
</main>

02. javascript

clientX, clientY, offsetX, offsetY, pageX, pageY, screenX, screenY도 값을 나타 내주기 위해 표시를 해주며, style 표시가 된 단어는 반응을 해줄 수 있도록 만들었습니다.

window.addEventListener("mousemove",(event) => {
    document.querySelector(".clientX").innerText = event.clientX
    document.querySelector(".clientY").innerText = event.clientY
    document.querySelector(".offsetX").innerText = event.offsetX
    document.querySelector(".offsetY").innerText = event.offsetY
    document.querySelector(".pageX").innerText = event.pageX
    document.querySelector(".pageY").innerText = event.pageY
    document.querySelector(".screenX").innerText = event.screenX
    document.querySelector(".screenY").innerText = event.screenY
});

const cursor = document.querySelector(".mouse__cursor");

window.addEventListener("mousemove",(e) => {

    cursor.style.left = e.clientX - 25 + "px" ;
    cursor.style.top = e.clientY - 25 + "px";

});

//getAttribute 
document.querySelectorAll(".mouse__wrap span").forEach((span)=>{
    let attr = span.getAttribute("class")

    span.addEventListener("mouseover", ()=>{
        cursor.classList.add(attr);
    });
    span.addEventListener("mouseout", ()=>{
        cursor.classList.remove(attr);
    });
    
}); 

03. css

마우스에 올릴 때 애니메이션을 주며, 반응이 가능하도록 하였습니다.

 .mouse__cursor {
    position: absolute;
    left: 0;
    top: 0;
    width: 50px;
    height: 50px;
    border-radius: 50%;
    border: 3px solid #fff;
    background-color: rgba(255,255,255,0.1);
    
    user-select: none;  /* 포인터로 선택할 수 없게 만듬 */
    pointer-events: none;
    transition: 
    background-color 0.3s,
    border-color 0.3s,
    transform 0.6s,
    rotate 0.3s,
    border-radius 0.3s ;
  }

  .mouse__cursor.style1 {
    background-color: rgba(238, 43, 173, 0.199);
    border-color: rgb(238, 43, 173);
  }

  .mouse__cursor.style2 {
    background-color: rgba(68, 56, 180, 0.247);
    border-color: rgb(68, 56, 180);
    transform: scale(2) rotateX(720deg);
  }

  .mouse__cursor.style3 {
    background-color: rgba(252, 217, 60, 0.219);
    border-color: rgb(252, 217, 60);
    transform: scale(1.5) rotateY(350deg);
  }

  .mouse__cursor.style4 {
    background-color: rgba(94, 201, 250, 0.178);
    border-color: rgb(94, 201, 250);
    transform: scale(3) rotateX(720deg);
  }

  .mouse__cursor.style5 {
    background-color: rgba(104, 241, 111, 0.192);
    border-color: rgb(104, 241, 111);
    transform: scale(2) rotate(720deg);
  }

  .mouse__cursor.style6 {
    background-color: rgba(60, 105, 252, 0.171);
    border-color: rgb(60, 105, 252);
    border-radius: 0;
  }

  .mouse__info {
    position: absolute;
    left: 20px;
    bottom: 10px;
    font-size: 14px;
    line-height: 1.6;
    color: #fff;
    margin-bottom: 10px;
  }

728x90

'Effect' 카테고리의 다른 글

Parallax Effect 02  (10) 2022.09.08
Parallax Effect 01  (6) 2022.09.06
이미지 슬라이드 유형 03  (5) 2022.09.02
이미지 슬라이드 02  (4) 2022.08.29
이미지 슬라이드 01  (2) 2022.08.29

댓글


고양이 고양이
고양이 고양이
고양이 고양이