2016-12-06 1 views
0

내 웹 사이트는 다른 섹션 div로 가득 찬 1 페이지입니다. 나는 홈 페이지에서 1 nav을 가지고 있고 스크롤을 한 후에 다른 고정 nav가 사라진다.내 탐색 막대가 중복되는 이유는 무엇입니까?

때로는 navs의 중복이있다. 따라서 고정 된 항법 장치는 일반 항법 장치 내에 있습니다. 정상적인 nav가 다시 나타나기 전에 고정 된 nav가 사라져야했기 때문에 이것은 이상합니다.

누구든지 이에 대한 통찰력을 갖고 있습니까? Google 크롬을 사용하여 코드를 표시합니다. 크롬 문제일까요?

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

    if($(this).scrollTop() > $('.nav').outerHeight()){ 
     $('.nav').hide(); 
     $('.nav_fixed').fadeIn("slow"); 
    } 

    else if($(this).scrollTop() == $('.nav').position().top) { 
     $('.nav_fixed').hide(); 
     $('.nav').fadeIn(700); 
    } 

    else { 

    } 
}); 
+0

당신이 당신의 마크 업/HTML을 표시 할 수 있습니다 :

봅니다 herehide()에 대한 완료 콜백 함수에 fadeIn() 설명 추가하는 등? –

+1

'.fadeIn' 전에 ['.stop()'] (https://api.jquery.com/stop/)을 추가하면 애니메이션을 여러 번 트리거하지 않을 수 있습니다. – empiric

답변

3

는 "정상적인 탐색이 등장하기 전에 고정 탐색이 사라진해야하기 때문에이 이상하다."

이것은 애니메이션이 비동기 적이라는 것과 관련 될 수 있습니다. hide() 명령어 다음에 fadeIn() 명령어를 사용했기 때문에 fadeIn()이 완료된 후에는 hide()이 완료됩니다. 사실 fadeIn()은 애니메이션의 비동기 특성 때문에 hide() 전에 발생합니다.

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

    if($(this).scrollTop() > $('.nav').outerHeight()){ 

    // By encapsulating the instruction for fadeIn() inside of a 
    // function that is then passed as a completion callback to 
    // the hide() method, we ensure that fadeIn() doesn't happen 
    // until hide() is finished 
    $('.nav').hide(function(){ 
     $('.nav_fixed').fadeIn("slow"); 
    }); 
    } else if($(this).scrollTop() == $('.nav').position().top) { 

    // By encapsulating the instruction for fadeIn() inside of a 
    // function that is then passed as a completion callback to 
    // the hide() method, we ensure that fadeIn() doesn't happen 
    // until hide() is finished 
    $('.nav_fixed').hide(function(){ 
     $('.nav').fadeIn(700); 
    });  
    } else { 

    } 
}); 
+0

나는 이것을 시도했지만 어떤 이유로 슬라이드 효과가 추가되었습니다. 왼쪽으로 미끄러지지 않는 이유는 확실하지 않은 이유! –

+0

페이드하기 전에 숨기기를 마칠 수 있으므로 숨겨진 탐색을 따르는 콘텐츠는 해당 공간을 채우기 위해 이동합니다. 이는 설정된 크기를 가진 div 안에 두 nav를 넣음으로써 해결할 수 있습니다. –

관련 문제