이 질문은 모두 stackoverflow에 관한 것이고 여기서도 내 솔루션을 가지고 있습니다. 그러나 여전히 작은 문제가 있습니다.고정 된 머리글로 앵커를 클릭하면 오프셋 설정
작은 하위 메뉴가 상단에 고정되어 있으므로 앵커 링크를 클릭하면 하위 메뉴 다음에 앵커가 표시됩니다. 내 코드
첫째, 대부분의 경우에 작동합니다
function offsetSubmenu() {
if(location.hash.length !== 0) {
window.scrollTo(window.scrollX, window.scrollY - submenuHeight);
}
}
$(window).on("hashchange", function() {
offsetSubmenu();
});
window.setTimeout(function() {
offsetSubmenu();
}, 1);
당신은 코드 페이지가로드 될 때 한 번만 실행 및 URL 변화 때마다 해시됩니다 참조하십시오. 그리고 그것은 지금까지 작동합니다. 문제는 해시가 변경되지 않는 경우입니다. 예를 들어 첫 번째 Hashlink를 클릭하고 스크롤 한 다음 해시가 변경되지 않으므로 창 크롤이 하위 메뉴의 오프셋없이 앵커로 점프합니다.
클릭 리스너가 작동하지 않아 브라우저가 앵커로 건너 뛰기 전에 $("a").click(..)
이 실행됩니다.
해시 태그가 변경되지 않을 때 어떻게 앵커 오프셋을 처리 할 수 있습니까?
당신이 (1 offsetSubmenu)'은'$ ("A")에'에서는 setTimeout을 사용하여 시도 되세요 (클릭합니다. ...)'? (처음으로'offsetSubmenu'를 실행하는 것과 같은 방식으로) –
@AlvaroMontoro 아주 좋습니다. 대답으로 적어주세요. 나는 그것을 표시 할 것입니다. – nbar