2013-12-17 3 views
0

아래의 코드를 사용하여 끈기있는 탐색을 설정하려고합니다.CSS 변경시 div로 스크롤되는 jQuery (끈적 끈적한 이동)

div가 고정으로 변경 될 때마다 브라우저가 자동으로 스크롤됩니다. 이것은 브라우저가 원래의 탐색 막대가있는 곳보다 더 멀리 스크롤 할 수 없음을 의미합니다.

아이디어가 있으십니까? 귀하의 콘텐츠가 끈적 요소가 position: relative로 설정되어있을 때, 그것은 충분히 높은하다고 딱 맞는 높이가 수직으로 스크롤하고, 문서 흐름에서 제거 할 때, 그 양은 충분히 높은 더 이상 없을 때

$(document).ready(function() { 
    var stickNavOffset = $('#nav').offset().top; 

    function sticky() { 
     if ($(this).scrollTop() > stickNavOffset-1) { 
      $('#nav').css({position:'fixed',left:'auto'}); 
     } else { 
      $('#nav').css({position:'relative',left:'auto'}); 
     } 
    } 

    $(window).scroll(function() { 
     sticky(); 
    }); 
}); 
+0

설명하는 문제를 이해하는 데 어려움을 겪고 있습니다. 나는 당신의 코드와 함께 빠른 [피들] (http://jsfiddle.net/nate/LTznp/)을 만들었다. (항상 질문을 게시 할 때 좋은 생각이다.) 당신이 가진 문제를 보여주고 있습니까? 그렇지 않다면 조정할 수 있습니까? – Nate

+0

예 및 아니오. 당신은 바이올린이고, 잘 작동합니다. 하지만 내 사이트에서 자동으로 상단으로 스크롤됩니다. 나는 그것을 랩탑에서 시험해 보았는데 문제가 발생하지 않는다. 시크릿 창에서도 내 데스크톱에 문제가 발생합니다. 그것이 브라우저 문제가 될까요? –

+0

브라우저 동작과 관련이있을 수 있지만 여전히 해결해야 할 부분입니다. :) 그래서 : 문제 해결의 기본 기술 중 하나는 문제를 일으키는 요소를 격리하는 것입니다. 우리는 잘 작동하는 바이올린 설정과 문제가있는 사이트를 가지고 있습니다. 따라서 문제를 재현 할 수있을 때까지 사이트에서 잠재적 요소를 더 많이 추가 할시기입니다. 문제의 원인이되는 구성 요소를 분리하면 솔루션의 3/4을 차지하게됩니다. – Nate

답변

0

귀하의 문제가 발생합니다 스크롤을 강제 실행합니다.

그래서 고정으로 전환하면 문서가 스크롤 할만큼 크지 않으므로 다시 윗쪽으로 돌아옵니다. 끈적 요소를 다시 position: relative으로 설정하면 스크롤 막대가 다시 나타납니다.

페이지에 더 많은 콘텐츠를 추가하여 테스트 할 수 있습니다. 끈적 거리는 요소가 없어도 스크롤 할 수있을 정도로 크면이 문제는 발생하지 않습니다.

또 다른 문제가 있습니다. 콘텐츠가 조금씩 점프됩니다. 사실 갑자기 끈적 끈적한 요소의 높이를 정확히 점프합니다. 갑자기 더 이상 존재하지 않습니다.

내 의견에 당신이 그 공간을 당신의 코드로 설명해야한다고 말한 것은 그 때문입니다. 과거에는 끈적 끈적한 요소를 만들었을 때, 높이가 튀지 않도록 자리에 두는 position: relative으로 설정 한 복제 된 자리 표시 자 요소를 만듭니다.

+1

완벽한! 관심있는 사람들을 위해 나는 을 덧붙였다.

nav하기 전에 display : none. 스티키 네비게이션이 position : fixed로 설정되면; navfiller를 표시하고 위치가 상대적으로 설정되면 숨 깁니다. –