scrollIntoView()
はすべてのブラウザーで動作しますか?ない場合は、jQuery
の代替手段がありますか?
@ 9bitsが指摘したように、これは長い間 すべての主要なブラウザでサポートされています です。心配する必要はありません。主な問題は、それがどのように機能するかです。ページの最後にある特定の要素にジャンプするだけです。そこにジャンプしても、ユーザーは次のことを知りません。
最初の2つはスクロール位置によって決定できますが、ジャンプが行われる前にユーザーがスクロール位置を追跡したと言うのは誰ですか?したがって、これは非決定的なアクションです。
最後の1つは、特にページにmovingヘッダーがあり、ビューからスクロールされて残りのページデザインが何も意味しない場合に当てはまる場合があります同じページ(左側のメニューバーのように、高さの合計垂直要素がない場合)。この問題が発生しているページがいくつあるか驚くでしょう。自分でチェックしてください。いくつかのページに移動し、上部を見て、を押します End キーを押してもう一度見てください。別のページだと思うかもしれません。
scrollintoview
jQueryプラグインそのため、ネイティブDOM機能を使用する代わりに、まだ ビューへのスクロールを実行するプラグイン があります。通常、スクロールをアニメーション化し、上記の3つの問題をすべて排除します。ユーザーは動きを簡単に追跡できます。
Matteo Spinnelliの iScroll-4 を使用し、iOSサファリでも機能します。 scrollTo、scrollToElement、scrollToPageの3つのメソッドがあります。 div内にラップされた要素の順序なしリストがあるとしましょう。 Robert Koritnikが上で書いたように、スクロールしたことを示すために、そのわずかなアニメーションが必要です。以下の方法でその効果が得られます。
scrollToElement(element, time);
scrollIntoViewIfNeededについてお読みください
if(el.scrollIntoViewIfNeeded){
el.scrollIntoViewIfNeeded()
}else{
el.scrollIntoView()
}
これを試したことはありませんが、組み込みのscrollIntoView関数に便乗することで多くのコードを節約できるようです。アニメーションアクションが必要な場合は、次のようにします。
JQueryの代替を使用して、<html>
および<body>
要素:
$('html, body').animate({
scrollTop: $("#myElem").offset().top
}, 1000);