jquery를 사용하여 페이지의 특정 위치로 스크롤하려면 어떻게해야합니까?


133

jQuery를 사용하여 페이지의 특정 위치로 스크롤 할 수 있습니까?

스크롤하려는 위치에 있어야합니까?

<a name="#123">here</a>

아니면 특정 DOM ID로 이동할 수 있습니까?


3
단지 작은 노트 : 속성 "이름은"1.1 엄격한 사용 ID를 대신 XHTML에서 허용되지 않습니다
유라이 Blahunka을

흥미로운 질문은 페이지 좌표를 사용하여 스크롤 할 수 없습니까? 우리는 할 수 있어야한다고 생각합니다.
Omar Abid

[여기] [1] [1]에서 귀하의 요구 사항과 유사한 솔루션을 얻었습니다 : stackoverflow.com/questions/3432656/…
user1493023

@mrblah 문제가 해결 되었습니까?
Meghdad Hadidi

답변:


242

jQuery 스크롤 플러그인

이것은 jquery 태그가 지정된 질문 이므로이 라이브러리에는 부드러운 스크롤을위한 매우 좋은 플러그인이 있다고 여기에서 찾을 수 있습니다 : http://plugins.jquery.com/scrollTo/

설명서에서 발췌 :

$('div.pane').scrollTo(...);//all divs w/class pane

또는

$.scrollTo(...);//the plugin will take care of this

스크롤을위한 커스텀 jQuery 함수

사용자 정의 스크롤 jquery 함수를 정의하여 매우 가벼운 접근 방식 을 사용할 수 있습니다

$.fn.scrollView = function () {
    return this.each(function () {
        $('html, body').animate({
            scrollTop: $(this).offset().top
        }, 1000);
    });
}

다음과 같이 사용하십시오.

$('#your-div').scrollView();

페이지 좌표로 스크롤

애니메이션 htmlbody와 요소 scrollTop또는 scrollLeft속성

$('html, body').animate({
    scrollTop: 0,
    scrollLeft: 300
}, 1000);

일반 자바 스크립트

스크롤 window.scroll

window.scroll(horizontalOffset, verticalOffset);

요약하면 window.location.hash를 사용하여 ID가있는 요소로 이동하십시오.

window.location.hash = '#your-page-element';

HTML에서 직접 (접근성 향상)

<a href="#your-page-element">Jump to ID</a>

<div id="your-page-element">
    will jump here
</div>

@Juraj Blahunka에게 감사드립니다. 그러나 나는 플러그인없이 이것을합니다
Meghdad Hadidi

링크가 ScrollTo로 연결되지 않습니다 . 업데이트 하시겠습니까?
Barna Tekse

이것이 답이되어야합니다!
neelmeg

128

그렇습니다. 일반 JavaScript에서도 매우 쉽습니다. 요소에 ID를 부여한 다음 "책갈피"로 사용할 수 있습니다.

<div id="here">here</div>

사용자가 링크를 클릭 할 때 스크롤되도록하려면, try-and-true 방법을 사용하면됩니다.

<a href="#here">scroll to over there</a>

프로그래밍 방식으로 수행하려면 scrollIntoView()

document.getElementById("here").scrollIntoView()

@nickf 아직 모든 곳에서 지원되지는 않습니다. caniuse.com/#search=scrollIntoView
Aditya Singh

이것은 지원합니다 ( developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView ). 캐니 우스를 제대로 읽지 않았다고 생각하십시오. 그러나 애니메이션되지는 않습니다. 오히려 급격한 점프가 항상 좋은 것은 아닙니다.
perry

53

플러그인을 사용할 필요가 없으며 다음과 같이 할 수 있습니다.

var divPosition = $('#divId').offset();

그런 다음 이것을 사용하여 문서를 특정 DOM으로 스크롤하십시오.

$('html, body').animate({scrollTop: divPosition.top}, "slow");

3
+1 아마도 이것이 가장 좋은 대답 일 것입니다. 코드가 많지 않고 플러그인이 필요하지 않습니다.
Tricky12

1
창 크기 조정시 오프셋을 다시 계산해야 할 수도 있습니다.
Bart Burg

2
@BartBurg 좋은 점-또는 .animate통화 직전에 다시 계산
mikermcneil

5
간단한 대답을 좋아하십시오. 사람들이 왜 그렇게 복잡하게 만들어야합니까? 다른 플러그인을 원하지 않습니다.
sterfry68

1
실제로 가장 좋은 답변입니다.
Robert Ross

21

순수한 자바 스크립트 버전은 다음과 같습니다.

location.hash = '#123';

자동으로 스크롤됩니다. "#"접두사를 추가해야합니다.


1
이름이 지정된 앵커의 기본 방법을 사용하면 해시를 포함하는 URL을 가질 수 있습니다 (예 : mywebsite.com/page-about/#123) 책갈피에는 해시 + scrollintoview 동작도 포함됩니다.
okw

1
조금 설명 할 수 있다면 좋을 것입니다
JGallardo


5
<div id="idVal">
    <!--div content goes here-->
</div>
...
<script type="text/javascript">
     $(document).ready(function(){
         var divLoc = $('#idVal').offset();
         $('html, body').animate({scrollTop: divLoc.top}, "slow");
     });
</script>

이 예는이 경우 특정 div id, 즉 'idVal'을 찾는 방법을 보여줍니다. 이 페이지에서 ajax를 통해 열리는 div / 테이블이있는 경우 고유 한 div를 할당하고 스크립트를 호출하여 div의 각 컨텐츠에 대한 특정 위치로 스크롤 할 수 있습니다.

이것이 도움이 되길 바랍니다.


4
<script type="text/javascript">
    $(document).ready(function(){
        $(".scroll-element").click(function(){
            $('html,body').animate({
                scrollTop: $('.our_companies').offset().top
            }, 1000);

            return false;
        });
    })
</script>


코드에 주석을 추가하면 좋을 것입니다. 질문자가 질문을 해결하는 데 어떻게 도움이됩니까?
Artemix


0

@ juraj-blahunka의 경량 접근법 의 변형이 있습니다. 이 함수는 컨테이너가 문서라고 가정하지 않으며 항목이 보이지 않는 경우에만 스크롤됩니다. 불필요한 큐잉을 피하기 위해 애니메이션 큐잉도 비활성화됩니다.

$.fn.scrollToView = function () {
    return $.each(this, function () {
        if ($(this).position().top < 0 ||
            $(this).position().top + $(this).height() > $(this).parent().height()) {
            $(this).parent().animate({
                scrollTop: $(this).parent().scrollTop() + $(this).position().top
            }, {
                duration: 300,
                queue: false
            });
        }
    });
};

반송 문제가 있지만 방법이 작동하지 않습니다.
Anon

0

고정 IE 콘솔 오류와 함께 jquery.easing.min.js 사용

HTML

<a class="page-scroll" href="#features">Features</a>
<section id="features" class="features-section">Features Section</section>


        <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
        <script src="js/jquery.js"></script>
        <!-- Include all compiled plugins (below), or include individual files as needed -->
        <script src="js/bootstrap.min.js"></script>

        <!-- Scrolling Nav JavaScript -->
        <script src="js/jquery.easing.min.js"></script>

jquery

//jQuery to collapse the navbar on scroll, you can use this code with in external file with name scrolling-nav.js
        $(window).scroll(function () {
            if ($(".navbar").offset().top > 50) {
                $(".navbar-fixed-top").addClass("top-nav-collapse");
            } else {
                $(".navbar-fixed-top").removeClass("top-nav-collapse");
            }
        });
        //jQuery for page scrolling feature - requires jQuery Easing plugin
        $(function () {
            $('a.page-scroll').bind('click', function (event) {
                var anchor = $(this);
                if ($(anchor).length > 0) {
                    var href = $(anchor).attr('href');
                    if ($(href.substring(href.indexOf('#'))).length > 0) {
                        $('html, body').stop().animate({
                            scrollTop: $(href.substring(href.indexOf('#'))).offset().top
                        }, 1500, 'easeInOutExpo');
                    }
                    else {
                        window.location = href;
                    }
                }
                event.preventDefault();
            });
        });

그것은 간단한 작업을하기에는 너무 많은 코드입니다. location.hash = 'idOfElement';충분하다
Kolob Canyon

0

scroll-behavior: smooth;자바 스크립트 없이이 작업을 수행 하는 데 사용할 수 있습니다

https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior


스크롤 동작 : 부드럽게; 브라우저 호환 속성이 ​​아닙니다.
슈퍼 모델

- 더 낮은 링크 브라우저 호환성을 확인 developer.mozilla.org/en-US/docs/Web/CSS/...
Sairam

네, 귀하의 링크에 주어진 표가 보여지고 있습니다 : Edge, IE 및 safari는이 속성과 호환되지 않습니다.
슈퍼 모델
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.