본문 바로가기

아래로 스크롤 해주세요!

My Reference Book

-

제가 배웠던것을 한곳에 정리해보았어요!

HTML

HTML 태그 톺아보기

HTML

자세히보기

CSS

CSS 속성 톺아보기

CSS

자세히보기

JAVASCRIPT

JS 실행문 톺아보기

JAVASCRIPT

자세히보기

최신댓글

JS 응용하기

마우스 이펙트_04 : 마우스를 추적하는듯한 백그라운드 효과 구현하기!

by C0Di 2022. 9. 22.
728x90

마우스 이펙트_04 : 마우스를 추적하는 백그라운드 효과 만들어보기!

마우스가 위치한 곳에따라 백그라운드 이미지가 마우스를 따라가는 효과를 만들어보도록 하겠습니다!

HTML 코드

간단하게 HTML을 구성해 뼈대를 구축해봅시다!

<section id="mouseType">
    <div class="mouse__cursor"></div>
    <div class="mouse__wrap">
        <figure>
            <img src="../../../assets/slider/effect_bg_04.jpg" alt="">
            <figcaption>
                <p>winner winner chicken dinner!</p>
                <p>잠을 일찍 자는자가 세상을 지배한다.</p>
            </figcaption>
        </figure>
    </div>
</section>

CSS 코드

간단하게 예제를 위해 살을 붙여주기 위해서 하단의 CSS를 작성해 붙여넣어 줍니다.

/* mouseType */
    .mouse__wrap {
        width: 100%;
        height: 100vh;
        display: flex;
        justify-content: center;
        align-items: center;
        flex-direction: column;
        color: #fff;
        overflow: hidden;
        /* cursor: none; */
    }

    .mouse__wrap figure {
        width: 50vw;
        height: 50vh;
        /* background: #ccc; */
        position: relative;
        overflow: hidden;
        transition: transform 500ms ease;
        cursor: none;
    }

    .mouse__wrap figure:hover {
        transform: scale(1.025);
    }

    .mouse__wrap figure img {
        position: absolute;
        left: -5%;
        top: -5%;
        width: 110%;
        height: 110%;
        object-fit: cover;
    }

    .mouse__wrap figure figcaption {
        position: absolute;
        left: 50%;
        top: 50%;
        transform: translate(-50%, -50%);
        text-align: center;
        font-size: 16px;
        line-height: 1.4;
        white-space: nowrap;
        font-weight: 400;
    }

    .mouse__cursor {
        position: absolute;
        left: 0;
        top: 0;
        width: 20px;
        height: 20px;
        background: #fff;
        border-radius: 50%;
        z-index: 1000;
        user-select: none;
        pointer-events: none;
    }

JS 코드 : GSAP를 통해 부드럽게 이동시켜주기

0. 마우스 좌표 값은 pageX/pageY를 통해 각각 변수 mousePageX/mousePageY에 저장시켜 준 뒤 1. 브라우저 창의 너비값과 높이값을 구해 그 값을 절반 나눠 중심의 값을 구한 뒤
그 값을 마우스 값의 좌표를 빼줘 'centerPageX'와 'centerPageY'라는 변수에 각각 저장 시킨 뒤 2. imgMove 라는 변수에는 추적하고자 하는 배경 클래스를 짚고 3. gsap을 통해 imgMove가 centerPageX와 centerPageY 값에 따라 위치를 변화시켜줍니다.

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

document.querySelector(".mouse__wrap figure").addEventListener("mousemove", (e) => {
    // 커서

    gsap.to(cursor, {
        duration: .2,
        left: e.pageX - cursorRect.width / 2,
        top: e.pageY - cursorRect.height / 2,
    })

    //마우스 좌표 값
    let mousePageX = e.pageX;
    let mousePageY = e.pageY;

    // 전체 가로
    // window.innerWidth; //1680 : 브라우저 크기
    // window.outerWidth; //774 : 브라우저 크기 (스크롤바 포함)
    // window.screen.width; //1680 : 화면 크기

    // 마우스 좌표 값 가운데로 초기화
    // 전체 길이/2 - 마우스 좌표값 == 0
    let centerPageX = window.innerWidth/2 - mousePageX;
    let centerPageY = window.innerHeight/2 - mousePageY;

    //이미지 움직이기
    const imgMove = document.querySelector(".mouse__wrap figure img");
    // imgMove.style.transform = "translate("+centerPageX/20+"px, "+centerPageY/20+"px)";

    gsap.to(imgMove, {
        duration: 0.3,
        x: centerPageX/20,
        y: centerPageY/20,
    })
})

결과


728x90
반응형

댓글

#HASH_TAGS

-

1

공부 숙제가 다양해서 너무 좋아요 다크모드 scroll-snap-type 오징어 1Kg 당 3000원 제이쿼리 필터선택자 오늘 조업 마감했습니다. 멈추지 않는 ' j ' 시리-즈 메서드 HTML 오징어 한마리 수확 완료! 오징어 두마리 포획 완료 ImageSlideEffect 코딩 코드 JQuery 울적하니 꽃을 달아봤습니다 선택해주세요 슬라이드 결과 : 월요일 화사한가요? 이건 또 뭐람 내일은 즐거운 월요일 Method scroll-snap-align 오늘은 내가바로 오징어! 오늘도 웹표준은..