마우스 스크롤 위치 값에 대하여

마우스 스크롤 위치 값에 대하여

QA

마우스 스크롤 위치 값에 대하여

본문

아래의 스크립트를 보면 

animation이 화면의 상하 가운데에 지점에서 액션이 일어 나는데

이를 좀더 아래 부분에서 animation이 일어나게 할수 있을까요?

 windowHeight의 값을 주거나 하면 될것 같은데 

잘 모르겠네요.. 고수님들의 한수를 부탁드립니다.

 

<script>
    $(window).scroll(function(){
        $('.bless_ani_1').each(function(){
            var elPosition = $(this).offset().top;
            var elHeight = $(this).height();
            var windowTop = $(window).scrollTop();
            var windowHeight = $(window).height();
            if (elPosition < windowTop + windowHeight - elHeight) {
                $(this).addClass("animation  fade-in-right");
            }
            if (elPosition > windowTop + windowHeight ) {
                $(this).removeClass("animation  fade-in-right");
            }
            <!-- 페이지 내려 왔다 다시 올라갈때  -->
            //if (elPosition + elHeight < windowTop ) { 
                //$(this).removeClass("animation  fade-in-right");
            //}
        });
    });
</script>

이 질문에 댓글 쓰기 :

답변 2

다음 코드가 도움이 될지 모르겠습니다.

 


<!DOCTYPE html>
<html lang="en">
<head>
    <title></title>
    <meta charset="UTF-8" />
<style>
.wrap {
    overflow-x: hidden;
}
.bless_ani_1 {
    background-color: #7da152;
    height: 10em;
    opacity: 0;
    position: relative;
    right: -90vw;
}
.animation {
    animation-duration: 2s;
    animation-fill-mode: forwards;
}
.fade-in-right {
    animation-name: fade-in-right;
    
}
.fade-out-right {
    animation-name: fade-out-right;
}
@keyframes fade-in-right {
    from { opacity: 0; right: -100vw;}
    to { opacity: 1; right: 0; }
}
@keyframes fade-out-right {
    from { opacity: 1; right: 0;}
    to { opacity: 0; right: -100vw; }
}
</style>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<div class="wrap">
<hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr />
<hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr />
<hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr />
<hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr />
<hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr />
<hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr />
<div class="bless_ani_1"></div>
<hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr />
<hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr />
<hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr />
<hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr />
<hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr />
<hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr /><hr />
</div>
<script>
    $('.bless_ani_1').addClass('animation');
    $(window).scroll(function(){
        $('.bless_ani_1').each(function(){
            var elPosition = $(this).offset().top;
            // var elHeight = $(this).height();
            var elHeight = $(this).height() / 2;
            var windowTop = $(window).scrollTop();
            
            // var windowHeight = $(window).height();
            var windowHeight = window.innerHeight;
            
            windowHeight = Math.floor(windowHeight / 2);
            windowHeightMargin = Math.floor(windowHeight / 1.5);
            windowHeight += windowHeightMargin;
            if (elPosition < windowTop + windowHeight - elHeight) {
                if ($(this).hasClass('fade-in-right') == false) {
                    $(this).removeClass("fade-out-right").addClass("fade-in-right");
                }
            } else {
            // if (elPosition > windowTop + windowHeight ) {
                if ($(this).hasClass('fade-in-right') == true) {
                    $(this).removeClass("fade-in-right").addClass("fade-out-right");
                }
            }
            // <!-- 페이지 내려 왔다 다시 올라갈때  -->
            // if (elPosition + elHeight < windowTop ) { 
            //     $(this).removeClass("animation  fade-in-right");
            // }
        });
    });
</script>
</body>
</html>

위의 스크립트를 수정하여 아래와 같이 변경하면 됩니다.

<script>
    $(window).scroll(function(){
        $('.bless_ani_1').each(function(){
            var elPosition = $(this).offset().top;
            var elHeight = $(this).height();
            var windowTop = $(window).scrollTop();
            var windowHeight = $(window).height();
            if (elPosition < windowTop + windowHeight - elHeight - windowHeight/2) {
                $(this).addClass("animation  fade-in-right");
            }
            if (elPosition > windowTop + windowHeight ) {
                $(this).removeClass("animation  fade-in-right");
            }
            <!-- 페이지 내려 왔다 다시 올라갈때  -->
            //if (elPosition + elHeight < windowTop ) { 
                //$(this).removeClass("animation  fade-in-right");
            //}
        });
    });
</script>

위 스크립트는 마우스 스크롤 위치가 화면의 상하 가운데 지점에서 액션이 일어나게 됩니다.

만약 마우스 스크롤 위치가 화면의 상하 부분에서 액션이 일어나게 하고 싶다면 windowHeight의 값을 화면의 상하 부분에서 원하는 값으로 변경하면 됩니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 119
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT