2011-09-12 2 views
1

새 해시 태그를 기준으로 스크롤 막대의 위치를 ​​변경할 수 있습니까? 현재 페이지는 #target을 사용하여 대상으로 지정된 요소의 맨 위로 스크롤됩니다. 이는 정상적인 동작입니다. 페이지가 예를 들어 앵커 태그보다 100px 더 아래로 스크롤되도록 (앵커 태그 앞에 추가로 100px를 추가하도록) 이동하는 방법이 있습니까?#anchors를 사용하여 추가 위치 지정이있는 스크롤 바 이동

앵커 또는 자바 스크립트의 교묘 한 배치가 사용되어야하는지 확실하지 않습니다. 앵커의 위치를 ​​정말 바꿀 수있어서 자바 스크립트 솔루션을 기대하고 있는지 확신 할 수 없습니다.

감사

당신은이 질문에 대한 답변을 결합 할 수

답변

2

: 몇 가지 추가 논리로 On - window.location.hash - Change?

: 당신이 제어 할 경우 URL에 #anchor 이상,

$(function(){ 
    var win = $(window); //cache your jq objects! 
    function fixScrollTop(){ 
    win.scrollTop(win.scrollTop() + 100); 
    } 
    if(window.location.hash !== ""){ 
    fixScrollTop(); 
    } 
    win.bind('hashchange', fixScrollTop); 
}); 

아, (아마도 브라우저 호환성에 따라) 브라우저에서 스크롤 할 수 있도록 ID가있는 요소의 ID로 설정하십시오.

+0

해시 변경 이벤트 - 깔끔한 해결책과의 조합입니다. 'scrollTop'도 움직일 수 있습니다. 또한, 일종의 nit이지만 jQuery는 창에 대한 참조를 캐시하므로이 경우 매우 중요하지 않다고 생각합니다. – harpo

+0

아, 좋은 생각이야. 감사. hashchange 이벤트는 페이지가로드 된 후에 만 ​​발생합니다. 즉 이미 해당 페이지에있는 경우 해시를 변경합니다. 만약 내가 직접'example.php # target' 페이지를로드한다면 페이지로드시 hashchange가 실행됩니까? –

+0

내가 변경 한 내용은 onload에서 작동해야합니다. – dtanders