본문 바로가기
Javascript응용_Effect

Mouse Effect 03

by 코딩대원 2022. 9. 22.

마우스 이펙트

마우스 이펙트 세번째 시간입니다.


마우스 이펙트 03

마우스 커서를 따라서 비춰주는 조명효과를 주었습니다.

01. HTML 코드

{
    <main id="main">
    <section id="mouseType">
        <div class="mouse__cursor"></div>
        <div class="mouse__wrap">
            <p>Resolve to <span>perform</span> what your ought, <span>perform</span> without fail <span>what you resolve</span></p>
            <p>해야할 일은 과감히 하라, <span>결심한 일은</span> 반드시 <span>실행하라.</span></p>
        </div>
    </section>
  </main>
} 

02. CSS 코드

커서포인터의 배경이미지를 배경과 같은이미지로 해주고 중앙으로 맞춰줍니다.

{
    .mouse__wrap {
        width: 100%;
        height: 100vh;
        display: flex;
        align-items: center;
        justify-content: center;
        flex-direction: column;
        color: #fff;
        overflow: hidden;
        cursor: none;
    }
    .mouse__wrap p {
        font-size: 2vw;
        line-height: 2;
        font-weight: 300;
    }
    .mouse__wrap p:last-child {
        font-size: 3vw;
        font-weight: 400;
    }
    .mouse__wrap p span {
        border-bottom: 0.15vw dashed orange;
        color: orange;
    }
    @media (max-width: 800px){
        .mouse__wrap p {
            padding: 0 20px;
            font-size: 24px;
            line-height: 1.5;
            text-align: center;
            margin-bottom: 10px;
    }
        .mouse__wrap p:last-child {
            font-size: 40px;
            line-height: 1.5;
            text-align: center;
            word-break: keep-all;
    }
    }
    .mouse__cursor {
        position: absolute;
        left: 0;
        top: 0;
        width: 200px;
        height: 200px;
        z-index: -1;
        border-radius: 50%;
        background: #fff;
        background-image: url(../assets/img/effect_bg08@2x-min.jpg);
        background-size: cover;
        background-position: center center;
        background-attachment: fixed;
        border: 5px solid #fff;
    }
}

03. script 코드

먼저, getBoundingClientRect를 이용해서 커서 위치값을 객체 형태로 구해줍니다.
좌표의 기준값을 중앙으로 잡기 위해서 left: e.pageX - circle.width/2, top: e.pageY - circle.height/2,로 맞춰줍니다.
addEventListener를 통해 mousemove에 gsap효과를 넣어줍니다.

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

    // const circleW = cursor.offsetWidth;     //200
    // const circleH = cursor.offsetHeight;     //200
    // const circle2 = cursor.clientWidth;     //190 : 보더값 제외
    
    const circle = cursor.getBoundingClientRect();

    console.log(circle);
    // const DOMRect = {
    //     x: 0,
    //     y: 0,
    //     bottom: 200,
    //     height: 200,
    //     left: 0,
    //     right: 200,
    //     top: 0
    //     width: 200
    // }


    window.addEventListener("mousemove", (e) => {
        gsap.to(cursor, {
            duration: 0.5,
            left: e.pageX - circle.width/2,
            top: e.pageY - circle.height/2,
        });
    });
}

'Javascript응용_Effect' 카테고리의 다른 글

Mouse Effect 05  (3) 2022.09.28
Mouse Effect 04  (2) 2022.09.22
Parallax Effect 05  (6) 2022.09.20
Mouse Effect 02  (5) 2022.09.18
Parallax Effect 04  (2) 2022.09.18

댓글


HTML
CSS

JAVASCRIPT

자세히 보기