jQuery가있는 요소로 스크롤하십시오


질문

 

이 입력 요소가 있습니다.

<input type="text" class="textfield" value="" id="subject" name="subject">

그런 다음 다른 텍스트 입력, TextAreas 등과 같은 다른 요소가 있습니다.

사용자가 #subject로 입력을 클릭하면 페이지가 좋은 애니메이션이있는 페이지의 마지막 요소로 페이지가 스크롤되어야합니다.그것은 아래로 스크롤되어 맨 위로가되지 않아야합니다.

페이지의 마지막 항목은 #submit이있는 제출 버튼입니다.

<input type="submit" class="submit" id="submit" name="submit" value="Ok, Done.">

애니메이션은 너무 빨리해서는 안되며 유체 여야합니다.

나는 최신 jQuery 버전을 실행하고 있습니다.나는 플러그인을 설치하지 않고 기본 jQuery 기능을 사용하여이를 달성하는 것을 선호합니다.


답변

 

ID 버튼이있는 버튼이있는 경우이 예제를 시도하십시오.

$("#button").click(function() {
    $([document.documentElement, document.body]).animate({
        scrollTop: $("#elementtoScrollToID").offset().top
    }, 2000);
});

나는 jQuery 플러그인이없는 기사의 코드를 원활하게 스크롤합니다.그리고 나는 아래의 예에서 그것을 테스트했습니다.

<스크립트 src = "https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js">

이 간단한 스크립트를 사용합니다

if($(window.location.hash).length > 0){
        $('html, body').animate({ scrollTop: $(window.location.hash).offset().top}, 1000);
}

해시 태그가 URL에서 발견되면 ScrollTo가 ID로 애니메이션을 찾으려면 정렬됩니다.해시 태그가 발견되지 않으면 스크립트를 무시하십시오.



답변

jQuery (document). 개선 (함수 ($) { $ ( 'a [href ^ = "#"]'). 바인드 ( 'Click.smoothScroll', 함수 (e) { e.preventDefault (); var target = this.hash, $ target = $ (대상); $ ( 'html, body'). stop (). 애니메이션 ({ 'scrolltop': $ target.offset (). 톱 40 }, 900, 'Swing', Function () { window.location.hash = 대상; }); }); });