윈도우 크기가 767px 미만일 때 div를 나중에 위치로 이동시키는 jQuery 코드가 있습니다. 모두 잘 작동합니다.detach() 후 잘못된 위치로 스크롤 ScrollTop insertAfter()
또한 페이지가로드 된 후 주 내비게이션을지나 스크롤하여 장치가 < 767px 인 경우 몇 가지 jQuery 코드가 있습니다.
scrollTop
기능이 정상적으로 작동합니다. detach()
+ insertAfter()
기능이 정상적으로 작동합니다.
그러나 ... insertAfter()
코드에 영향을 미치는 하나의 페이지에서
, 잘못된 영역으로 scrollTop
코드 스크롤됩니다. 요소가 이동하기 전에 앵커가 인 곳으로 스크롤하는 것 같습니다.
아이디어가 있으십니까? 페이지가 http://northqueensviewhomes.com/community에 있습니다 (브라우저 창을 축소해야 이러한 동작을 볼 수 있으므로 스크롤 기능을 보려면 작은 창을 다시로드해야 함).
는 여기에 두 가지 기능과 호출 ...
function rearrangeHelpfulLinks() {
var $theLinks = $('#quicklinks.rc.well');
if (($theLinks).length) {
if ($(window).width() <= 767) {
$theLinks.detach().insertAfter('.core-copy');
} else {
$theLinks.detach().insertAfter('#main-nav');
}
}
}
function scrollOnSmallScreen() {
if ($(window).width() <= 767) {
$('html, body').animate({
scrollTop: ($('#main').offset().top - 13)
},, 'easeInOutExpo');
}
}
과 insertAfter()
루틴은 창 크기 조정 불려 ...
$(window).resize(function() {
rearrangeHelpfulLinks();
});
있어 ... 그리고 스크롤 기능을 완전하게하기 위해서 (페이지로드라고 간단 ...)
scrollOnSmallScreen();
필요한 경우 확실하지 않습니다. 더 이상 나를 도울 수있는 무엇이든지 (그러나!), 나는 앵커에게 단순히있는 정확한 위치로 스크롤을 얻고 싶습니다. #main
.
모두에게 감사드립니다.
setTimeout(scrollOnSmallScreen,0);
이 당신의 트레드와 DOM 변경 스레드 실행 후 자동 스크롤을 실행하여
가'scrollOnSmallScreen()를 호출하려고; '에서는 setTimeout 사용'(scrollOnSmallScreen, 0);' 를 또한 어딘가에 추가하는 것이 좋다 '$ (창) .scroll (함수() {$ (' html body '). stop();});' 왜냐하면 내가 스크롤하고 싶으면 애니메이션 끝내기를 기다려야한다는 것을 매우 annoing하기 때문입니다. –
setTimeout이 완벽하게 작동했습니다. 감사합니다. 왜 내가 그것에 대해 생각하지 않았는지 모르겠다. stop()에 대해서는 어디서 호출해야할지 모르겠습니다. 어느 곳에서나 자동 스크롤을 죽입니다. – dashard
당신은'$ (window) .scroll (function() {$ ('html body'). stop();});'을 주터 범위로 실행하는 스크립트에 넣어야한다. –