577

質問のリストがあります。最初の質問をクリックすると、ページの下部にある特定の要素に自動的に移動します。

jQueryでこれを行うにはどうすればよいですか?

4

25 に答える 25

1101

jQuery は必要ありません。Google 検索で得た上位の結果のほとんどから、次のような答えが得られました。

window.scrollTo(0,document.body.scrollHeight);

ネストされた要素がある場所では、ドキュメントがスクロールしない場合があります。この場合、スクロールする要素をターゲットにして、代わりにそのスクロールの高さを使用する必要があります。

window.scrollTo(0,document.querySelector(".scrollingContainer").scrollHeight);

onclickそれを質問のイベント(つまり)に結び付けることができます<div onclick="ScrollToBottom()" ...

あなたが見ることができるいくつかの追加のソース:

于 2012-07-30T05:05:57.413 に答える
164

ページ全体を一番下までスクロールするには:

var scrollingElement = (document.scrollingElement || document.body);
scrollingElement.scrollTop = scrollingElement.scrollHeight;

JSFiddleのを参照してください

要素を一番下までスクロールするには:

function gotoBottom(id){
   var element = document.getElementById(id);
   element.scrollTop = element.scrollHeight - element.clientHeight;
}

そして、これがどのように機能するかです:

ここに画像の説明を入力

参照: scrollTopscrollHeightclientHeight

更新: Chrome (61+) および Firefox の最新バージョンは、本文のスクロールをサポートしていません。https://dev.opera.com/articles/fixing-the-scrolltop-bug/ を参照してください

于 2015-10-18T02:23:59.217 に答える
80

バニラ JS の実装:

element.scrollIntoView(false);

https://developer.mozilla.org/en-US/docs/Web/API/element.scrollIntoView

于 2014-07-15T19:30:23.573 に答える
30

以下は、クロスブラウザソリューションです。Chrome、Firefox、Safari、IE11 でテスト済み

window.scrollTo(0, document.body.scrollHeight || document.documentElement.scrollHeight);

window.scrollTo(0,document.body.scrollHeight); 少なくとも Firefox 37.0.2 では、Firefox では動作しません。

于 2015-04-30T15:36:17.743 に答える
17

スクロールするとページが拡張されてボタン (ソーシャル ネットワークなど) が表示され、最後 (ページの最後のボタン) までスクロールされることがあります。私は次のスクリプトを使用します。

var scrollInterval = setInterval(function() { 
    document.documentElement.scrollTop = document.documentElement.scrollHeight;
}, 50);

また、ブラウザの JavaScript コンソールを使用している場合は、スクロールを停止できると便利な場合があるため、次を追加します。

var stopScroll = function() { clearInterval(scrollInterval); };

そして、使用しますstopScroll();

特定の要素までスクロールする必要がある場合は、次を使用します。

var element = document.querySelector(".element-selector");
element.scrollIntoView();

または、特定の要素に自動スクロールするためのユニバーサル スクリプト (またはページのスクロール間隔を停止する):

var notChangedStepsCount = 0;
var scrollInterval = setInterval(function() {
    var element = document.querySelector(".element-selector");
    if (element) { 
        // element found
        clearInterval(scrollInterval);
        element.scrollIntoView();
    } else if((document.documentElement.scrollTop + window.innerHeight) != document.documentElement.scrollHeight) { 
        // no element -> scrolling
        notChangedStepsCount = 0;
        document.documentElement.scrollTop = document.documentElement.scrollHeight;
    } else if (notChangedStepsCount > 20) { 
        // no more space to scroll
        clearInterval(scrollInterval);
    } else {
        // waiting for possible extension (autoload) of the page
        notChangedStepsCount++;
    }
}, 50);
于 2016-06-01T20:32:34.837 に答える
13

この関数は、呼び出す必要がある場所ならどこでも使用できます。

function scroll_to(div){
   if (div.scrollTop < div.scrollHeight - div.clientHeight)
        div.scrollTop += 10; // move down

}

jquery.com:ScrollTo

于 2012-07-30T05:09:39.407 に答える
4

link 要素のid参照属性に任意のものを添付できます。href

<a href="#myLink" id="myLink">
    Click me
</a>

上記の例では、ユーザーがClick meページの下部をクリックすると、ナビゲーションはClick meそれ自体に移動します。

于 2017-01-10T00:31:16.910 に答える
3

素敵な JavaScript プラグインであるGentle Anchorsを試すことができます。

例:

function SomeFunction() {
  // your code
  // Pass an id attribute to scroll to. The # is required
  Gentle_Anchors.Setup('#destination');
  // maybe some more code
}

互換性テスト済み:

  • マック ファイヤーフォックス、サファリ、オペラ
  • Windows Firefox、Opera、Safari、Internet Explorer 5.55 以降
  • Linux はテストされていませんが、少なくとも Firefox では問題ないはずです
于 2012-07-30T05:08:49.283 に答える
3

パーティーに遅れましたが、任意の要素を一番下にスクロールする簡単な JavaScript のみのコードを次に示します。

function scrollToBottom(e) {
  e.scrollTop = e.scrollHeight - e.getBoundingClientRect().height;
}
于 2016-05-27T17:54:01.323 に答える
2

これが私の解決策です:

 //**** scroll to bottom if at bottom

 function scrollbottom() {
    if (typeof(scr1)!='undefined') clearTimeout(scr1)   
    var scrollTop = (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;
    var scrollHeight = (document.documentElement && document.documentElement.scrollHeight) || document.body.scrollHeight;
    if((scrollTop + window.innerHeight) >= scrollHeight-50) window.scrollTo(0,scrollHeight+50)
    scr1=setTimeout(function(){scrollbottom()},200) 
 }
 scr1=setTimeout(function(){scrollbottom()},200)
于 2016-01-26T08:34:56.367 に答える
0

Angular を探している人がいる場合

下にスクロールして、これをdivに追加するだけです

 #scrollMe [scrollTop]="scrollMe.scrollHeight"

   <div class="my-list" #scrollMe [scrollTop]="scrollMe.scrollHeight">
   </div>
于 2019-09-17T08:37:58.743 に答える
-1

window.scrollTo(0,1e10);

常に動作します。

1e10 は大きな数です。そのため、常にページの最後になります。

于 2019-07-09T10:08:31.940 に答える