테스트 사이트 - 개발 중인 베타 버전입니다

고정헤더 ,스크롤을 내리면 헤더 사라지고 올리면 헤더 나타나고, 채택완료

소소한여자 2년 전 조회 2,669

기본값 .nav-down {배경:투명}

.nav-no {display: none;} 스크롤 내리면 헤더사라짐

.nav-up {background-color: #000000;} 스크롤 올리면 헤더 배경 검정색 

 

문제는..... 

스크롤을 내렸다가 , 가장 위로 스크롤을 올리면 배경이 검정값으로 되어있습니다. 

가장 위로 스크롤을 다시 올릴때 처음  .nav-down 초기 값으로 하고 싶습니다 ㅠㅠ

 

혹시 다른 참고할 만한 자료가 있다면 링크걸어주시면 감사합니다. 

 

</strong></p>

<p> <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script></p>

<p>  <script src="../dist/scroll-up-bar.min.js"></script></p>

<p> </p>

<p> </p>

<p>  <script></p>

<p>/// Hide Header on on scroll down</p>

<p>var didScroll;</p>

<p>var lastScrollTop = 0;</p>

<p>var delta = 5; // 동작의 구현이 시작되는 위치</p>

<p>var navbarHeight = $('header').outerHeight(); // 영향을 받을 요소를 선택</p>

<p> </p>

<p>// 스크롤시에 사용자가 스크롤했다는 것을 알림</p>

<p>$(window).scroll(function(event){</p>

<p>    didScroll = true;</p>

<p>});</p>

<p> </p>

<p>// hasScrolled()를 실행하고 didScroll 상태를 재설정</p>

<p>setInterval(function() {</p>

<p>    if (didScroll) {</p>

<p>        hasScrolled();</p>

<p>        didScroll = false;</p>

<p>    }</p>

<p>}, 250);</p>

<p> </p>

<p>// 동작을 구현</p>

<p>function hasScrolled() {</p>

<p>    // 접근하기 쉽게 현재 스크롤의 위치를 저장한다.</p>

<p>    var st = $(this).scrollTop();</p>

<p>   </p>

<p>    // 설정한 delta 값보다 더 스크롤되었는지를 확인한다.</p>

<p>    if(Math.abs(lastScrollTop - st) <= delta){</p>

<p>        return;</p>

<p>    }</p>

<p>   </p>

<p>    // 헤더의 높이보다 더 스크롤되었는지 확인하고 스크롤의 방향이 위인지 아래인지를 확인한다.</p>

<p>    if (st > lastScrollTop && st > navbarHeight){</p>

<p>        // Scroll Down</p>

<p>        $('header').removeClass('nav-down').addClass('nav-no');</p>

<p>    } else {</p>

<p>        // Scroll Up</p>

<p>        if(st + $(window).height() < $(document).height()) {</p>

<p>            $('header').removeClass('nav-no').addClass('nav-up');</p>

<p>        }</p>

<p>    }</p>

<p>   </p>

<p>    // lastScrollTop 에 현재 스크롤위치를 지정한다.</p>

<p>    lastScrollTop = st;</p>

<p>}</p>

<p>



 </p>

<p>  </script></p>

<p> </p>

<p><strong>

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

소소한여자

요거는 다른 스크립트를 이용하여 해결하였습니다. 

우선 초보자에게는 , ^^;;; 이 방법이 더 쉬운것같아, 소스 공유합니다. 

 

우선 홈페이지 메인 이미지가 헤더 영역을 모두 덮어버리려고요 헤더를 고정헤더로 만들었습니다.

 

 

스크롤을 내리면, 헤더 영역이 흰색 배경과 글자 컬러가 바뀌게 하고 싶었습니다. 

 

 

 

그누보드 head.php파일 수정 

 

</strong></p>

<p> </p>

<p>    <script type="text/javascript" src="<a href="http://code.jquery.com/jquery-2.2.4.min.js"></script>" target="_blank" rel="noopener noreferrer">http://code.jquery.com/jquery-2.2.4.min.js"></script></a></p>

<p>     <script></p>

<p> </p>

<p>// 스크롤 높이에 따른</p>

<p> </p>

<p>$(window).scroll( function() {</p>

<p>    var scrollTop = $(window).scrollTop();</p>

<p>    if (scrollTop > 0){</p>

<p>        $("<span style="color:#e74c3c;">#hd,#nav</span>").addClass("fix");</p>

<p>    } else {</p>

<p>        $("<span style="color:#e74c3c;">#hd,#nav</span>").removeClass("fix");</p>

<p>    }</p>

<p>});</p>

<p>        </script></p>

<p> </p>

<p> </p>

<p><strong>

 

변경해야될 곳 hd , nav부분 

스크롤 내리면 해당 영역에 fix클래스 생김 

 

그누보드 head.php 원본 

class="main"

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

들레아빠

사용 중인 같은 기능

</p>

<p><script type="text/javascript" charset="utf-8">

$(function () {

    let scrolltop_before = 0;

    let scrolltop_after = 0;

    function fn_evt_scroll(e) {</p>

<p>        scrolltop_after = document.documentElement.scrollTop;</p>

<p>        if (scrolltop_before > scrolltop_after) {

        $('#gnb').css({

            "position": "fixed",

            "top": "0",

            "display": "block",

            "width": "100%",

            "z-index" : "10000"

        });

        $('#wrapper').css({

            "padding-top":"20px"

        });

        } else {

        $('#gnb').css({

            "display": "block",

            "position": "relative",

            "z-index" : "10000"

        });

        $('#wrapper').css({

            "padding-top":"20px"

        });

        }

        if (scrolltop_after < 1) {

        $('#gnb').css({

            "display": "block",

            "position": "relative",

            "z-index" : "10000"

        });

        }

        scrolltop_before = document.documentElement.scrollTop;

    }</p>

<p>    $(window).on("scroll", fn_evt_scroll);

});</p>

<p>$(function(){

  var nava = $('#gnb,#tnb'); //헤더를 변수에 넣기

  var page = $('#container'); //색상이 변할 부분

  var pageOffsetTop = page.offset().top; //색상 변할 부분의 top값 구하기

  $(window).resize(function(){ //반응형을 대비하여 리사이즈시 top값을 다시 계산

    pageOffsetTop = page.offset().top;

  });

  

  $(window).on('scroll', function(){

    if($(window).scrollTop() > 30){ //($(window).scrollTop() >= pageOffsetTop) { // 스크롤이 page보다 밑에 내려가면

      nava.addClass('down'); //클래스 추가

    } else { // 스크롤 올릴 때

      nava.removeClass('down'); //클래스 제거

    }

  });

});</p>

<p></script>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

소소한여자
2년 전
감사합니다

댓글을 작성하려면 로그인이 필요합니다.

현재 스크롤 높이가 0이면

기존 css들을 지우고 .nav-down 추가한다 명령어 넣으시면 될거 같은데요?

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

소소한여자
2년 전
감사합니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인