2014-08-31 4 views
1

스크롤 다운 후 위치가 변경되는 탐색 모음이 있습니다. 그것은 position : fixed와 함께 작동하지만, 스크롤하는 동안 사이트에서 계속되는 다른 모든 컨텐트처럼 움직이기를 원합니다. 나는 사용자가 상단에 위치를 변경해야 스크롤 중지 : Heres는스크롤 후 DIV 위치 변경

데모 : http://jsfiddle.net/gvjeyywa/5/

(특히 아이 패드의 스크롤) 절대 :

http://jsfiddle.net/gvjeyywa/7/

하지만 내가 그 위치가되고 싶어요를

JS가 JS를 초과하게하려면 어떻게해야합니까? 여기 내 JS가 :

var isInAction = false; 
    var lastScrollTop = 0; 
    $(window).scroll(function(event){ 
    var st = $(this).scrollTop(); 
    if (st > lastScrollTop){ 
    if (!isInAction){ 
     isInAction = true; 
     $("#navigation").animate({ 
      top: "-" + $("#navigation").innerHeight() + "px" 
     }).delay(1000).animate({ 
      top: "0px" 
     }, 800, function() { 
      isInAction = false; 
      }); 
     } 
     } 
    lastScrollTop = st; 
}); 
+0

@Moshtaf 여기 는 기본적으로이의 Moshtaf @ 내 새로운 질문 – Cyrill

+0

의 : 위치에 0 픽셀 : 나는 상단에 사업부를 절대은 ... 사용자가 스크롤, 그래서 사라집니다. 하지만 짧은 지연 후 맨 위의 막대기에 슬라이드 : 0px ... 사용자가 더/다시, 같은 효과를 아래로 스크롤하면 ... – Cyrill

답변

1

첫 번째로 나는 불가능하다고 생각하지만 몇 가지 시도 후에이 코드가 만들어졌다.
나는이 코드를 작성하고 여러 가지 기술을 사용하고 도움이되기를 희망하며 오랜 시간을 보냈습니다. 어쩌면 간단한 해결책도 있습니다 !!

var bitFlag = false; 
var lastScrollTop = 0; 
var timeoutId; 
$navigation = $("#navigation"); 
$(window).scroll(function (event) { 
    var intWindowTop = $(window).scrollTop(); 
    var intElementBottom = $navigation.offset().top + $navigation.innerHeight(); 
    if (intWindowTop > lastScrollTop) { 
     if (!bitFlag) { 
      $navigation.css("position", "absolute").css("top", intWindowTop + "px"); 
      bitFlag = true; 
     } 
     if (timeoutId) { 
      clearTimeout(timeoutId); 
     } 
     timeoutId = setTimeout(function() { 
      if (intWindowTop > intElementBottom) { 
       intDelayTime = setTimeout(function() { 
        $navigation.animate({ 
         top: intWindowTop + "px" 
        }, 800); 
       }, 500); 
      } 
     }, 100); 
    } else { 
     $navigation.css("position", "fixed").css("top", "0px"); 
     bitFlag = false; 

    } 
    lastScrollTop = intWindowTop; 
}); 

밀리 초 }, 500); 부 제어 지연 시간과 }, 800); 부 제어 애니메이션 속도 아래로 슬라이드.

Check JSFiddle Demo

+0

그것은 JSFiddle에서 완벽하게 작동하지만 어떻게 든 내 사이트에는 없는가? http://www.cyrill-kuhlmann.de/index.php/projects/ – Cyrill

+0

... 죄송합니다. 정말 감사드립니다. 그러나 내 사이트에서 "TypeError : 'undefined'는 '$ navigation.offset().'을 평가하는 객체가 아닙니다."라고 말하면서 그 의미를 알 수 없습니다. JS에서 나는 단지 시작이다 ... – Cyrill