페이지 / iframe의 맨 아래로 jQuery 스크롤


224

jquery를 사용하여 iframe 또는 페이지의 맨 아래로 오른쪽으로 스크롤하는 방법은 무엇입니까?

답변:


360

멋진 느린 애니메이션 스크롤을 원할 경우 앵커가 href="#bottom"있으면 맨 아래로 스크롤됩니다.

$("a[href='#bottom']").click(function() {
  $("html, body").animate({ scrollTop: $(document).height() }, "slow");
  return false;
});

선택기를 자유롭게 교체하십시오.


48
Firefox 3.5.7에서는 작동하지만 Chrome 4.0.295.0에서는 작동하지 않습니다. 다음은 Chrome에서 작동합니다. $ ( 'html, body'). animate ({scrollTop : $ (document) .height ()}, 'slow');
Tom

1
@ Tom, 나는 당신의 솔루션과 Mark의 차이점을 발견 할 수 없습니다!
Muhammad Gelbana

4
@MuhammadGelbana 편집 날짜를 확인하십시오. Mark가 Tom의 수정 사항을 포함하도록 답변을 업데이트 한 것 같습니다.
Paul Parker

실제로 요소의 높이를 얻을 필요가 없습니다. stackoverflow.com/a/44578849/1450294
Michael Scheper 2016 년

210

scrollTop ()은 스크롤 가능 영역에서 보이지 않는 픽셀 수를 반환하여 다음과 같이 지정합니다.

$(document).height()

실제로 페이지 하단을 초과합니다. 스크롤이 실제로 페이지 하단에서 '정지'하려면 브라우저 창의 현재 높이를 빼야합니다. 필요한 경우 여유를 사용할 수 있으므로 다음과 같이됩니다.

$('html, body').animate({ 
   scrollTop: $(document).height()-$(window).height()}, 
   1400, 
   "easeOutQuint"
);

29
이것은 허용되는 대답이어야합니다 .Tom은 절대적으로 맞습니다. 허용 된 끝을 처리하는 대신 스크롤이 갑자기 중지되므로 허용 된 대답이 제대로 작동하지 않습니다.
Christian

33
참고 : easeOutQuint플러그인이 필요하며 jQuery 자체에는 linearand 만 있습니다 swing.
newenglander

친구 좋은 물건입니다! 감사. 심지어 'easeoutquint'대신 'swing'으로이 작업을 수행해도 눈에 띄는 차이가 있습니다. '
Jesse Head

잘못된 형식인지 확실하지 않지만이 답변에 포인터를 추가하기 위해 허용 된 답변을 편집했습니다. 그렇다면 누군가가 그것을 되돌릴 수 있습니다.
xaxxon

이 솔루션은 페이지가 표준 준수 모드로 해석되는 경우에만 작동합니다. 예를 들어 <!DOCTYPE html>Chrome을 포함하지 않으면 Chrome은 창과 문서 높이에 대해 정확히 동일한 값을 반환하며,이 경우 $(document).height()-$(window).height()항상 0을 반환합니다. 여기를 참조하십시오. stackoverflow.com/questions/12103208/…
VKK

35

예를 들면 다음과 같습니다.

$('html, body').scrollTop($(document).height());

나는 그것을 작동시키지 못하는 것 같습니다. 전혀 아무것도하지 않습니다.
Adam

@adam 어떤 버전의 jQuery를 사용하고 있습니까?
Sonny Boy

14

이 스레드가 특정 요구 (내 경우에는 텍스트 영역 내에서 스크롤)에 대해 나에게 적합하지 않은 후에이 문제를 크게 발견하여 다른 사람 이이 토론을 읽는 데 도움이 될 수 있습니다.

Planetcloud의 대안

캐시 된 버전의 jQuery 객체 ( myPanel아래 코드의 jQuery 객체)가 이미 있으므로 이벤트 핸들러에 추가 한 코드는 다음과 같습니다.

myPanel.scrollTop(myPanel[0].scrollHeight - myPanel.height());

(벤 감사합니다)


1
div와 함께 나를 위해 일했습니다 :var d = $('#mydiv'); d.scrollTop (d[0].scrollHeight - d.height ());
gregn3


4

전체 페이지의 맨 아래로 이동 (즉시 스크롤)되는 간단한 기능입니다. 내장을 사용합니다 .scrollTop(). 개별 페이지 요소와 함께 작동하도록 이것을 조정하지 않았습니다.

function jumpToPageBottom() {
    $('html, body').scrollTop( $(document).height() - $(window).height() );
}

2
이유를 모르겠지만 Firefox 26.0에서는 작동하지 않으며이 기능이 실행될 때 맨 위로 스크롤됩니다. 이 문제는 말에 의해 해결되었다$(document).scrollTop($(document).height());

2

이것은 나를 위해 일했다 :

var elem = $('#box');
if (elem[0].scrollHeight - elem.scrollTop() == elem.outerHeight()) {
  // We're at the bottom.
}

이것은 질문에 대답하지 않습니다
huyz

2

애니메이션에 신경 쓰지 않으면 요소의 높이를 얻을 필요가 없습니다. 적어도 내가 시도한 모든 브라우저 scrollTop에서 최대 값보다 큰 숫자를 제공 하면 맨 아래로 스크롤됩니다. 따라서 가장 큰 숫자를 지정하십시오.

$(myScrollingElement).scrollTop(Number.MAX_SAFE_INTEGER);

스크롤 막대가있는 요소가 아닌 페이지를 스크롤하려면 myScrollingElement'body, html'과 동일하게 만드십시오 .

여러 곳 에서이 작업을 수행해야하므로 다음과 같이보다 편리하게 만들기 위해 빠르고 더러운 jQuery 함수를 작성했습니다.

(function($) {
  $.fn.scrollToBottom = function() {
    return this.each(function (i, element) {
      $(element).scrollTop(Number.MAX_SAFE_INTEGER);
    });
  };
}(jQuery));

그래서 한 묶음 물건을 추가 할 때이 작업을 수행 할 수 있습니다.

$(myScrollingElement).append(lotsOfHtml).scrollToBottom();

0

이전 답변에서 언급 한 스크립트는 다음과 같습니다.

$("body, html").animate({
    scrollTop: $(document).height()
}, 400)

또는

$(window).scrollTop($(document).height());

작동하지 않습니다크롬 과에 불안해 할 것이다 사파리 의 경우에 html 태그 CSS는overflow: auto;속성이 설정. 알아내는 데 거의 한 시간이 걸렸습니다.


0
$('.block').scrollTop($('.block')[0].scrollHeight);

새 코드가 도착하면이 코드를 사용하여 채팅을 스크롤합니다.


특히 다른 사람과 관련이없는 CSS 클래스를 사용하여 자신의 코드 기반에서 복사 할 때 코드에 대한 설명을 포함 시키십시오.)
Bruno Monteiro

스크롤 바;) 또는 전체 문서로 블록을 가져 가십시오.
Александр Лиссов
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.