scrollIntoViewおよびscrollIntoViewIfNeededAPIの概要
Introduction Scrollintoview
こんにちは〜視聴者の皆様、みなさん、みなさん!建国記念日中秋節の休日はもうすぐ終わります。勉強と仕事をするために(ti)愛(zhong)を片付ける時が来ました。今回は、2つの使いやすいAPIを紹介します。実際、これも怠惰なアーティファクトです。
による MDN 説明、Element.scrollIntoView()
このメソッドは、現在の要素をブラウザウィンドウの表示領域にスクロールします。
およびElement.scrollIntoViewIfNeeded()
このメソッドは、ブラウザウィンドウの表示領域にない要素をブラウザウィンドウの表示領域にスクロールするためにも使用されます。ただし、要素がすでにブラウザウィンドウの表示領域にある場合、スクロールは発生しません。このメソッドは、標準のElement.scrollIntoView()メソッドの独自のバリアントです。
したがって、一番上に戻って一番上の位置に移動する必要があり、キーボードがポップアップして入力ボックスをブロックすることは簡単に解決できます。
ただし、使いやすいAPIに直面して、フロントエンドの最初の反映は互換性を確認することです!
最初に見てくださいscrollIntoView
の:
黄色、黄色、緑、緑の部分を見ると、基本的に安心できます。サポートしていないのは、特定の属性の値だけです。
見た後scrollIntoViewIfNeeded
:
IE
with FireFox
完全な赤、if PC
それを使用したい場合は、内部プロジェクトしか持てません。これは残念です。でもモバイル側はまだグリーンで、基本的にはOK、安心して使えます〜
この記事は〜の紹介なので、属性ごとに少しずつ書いています。demo
クリックすると体験できます!
scrollIntoView
最初に導入されたscrollIntoView
実際には非常に簡単に使用できます。要素を取得した後、直接呼び出されます。scrollIntoViewIfNeeded()
OK、単純demo
ちょうどこのような。 側面にある小さな緑色のブロックをクリックすると、ページが上にスクロールします。demo
コードはおそらく次のようになります。
'chunk'> 'btn'>click const btn = document.querySelector('.btn') const test = document.querySelector('.chunk') btn.addEventListener('click', function() { test.scrollIntoView() }) Copy codeとても簡単ですか〜でもクラスメートからの質問があるかもしれません。これはアンカーの配置と同じではありませんか?意味がない!呼び出すときに心配しないでくださいscrollIntoView
実際には、パラメータを渡すことができます。scrollIntoView
1つのパラメータのみを受け入れますが、それぞれ2種類のパラメータを受け入れますBoolean
タイプパラメータおよびObject
タイプパラメータ。
まず、Boolean
パラメータを入力します。名前が示すように、パラメータはtrue
with false
を作成できます。 If true
要素の上部は、要素が配置されているスクロール領域の表示領域の上部と整列します。 If false
要素の下端は、要素が配置されているスクロール領域の表示領域の下端と整列します。簡単な例 ここをクリックできます 。主なコードは次のとおりです。
'chunk'> 'btn-top'>up 'btn-bottom'>down const up = document.querySelector('.btn-top') const down = document.querySelector('.btn-bottom') const test = document.querySelector('.chunk') up.addEventListener('click', function() { test.scrollIntoView(true) }) down.addEventListener('click', function() { test.scrollIntoView(false) }) Copy codeご覧のとおり、入力パラメータがそれぞれtrue
対false
の場合、右側のボタンをクリックすると、赤div
が表示可能領域の上部または下部に近くなります。 。
その後Object
タイプパラメータ、このオブジェクトには2つのオプションがあり、オブジェクト内にありますkey
。block
前のパラメータとBoolean
タイプパラメータは同じですが、値はもはやtrue
with false
よりセマンティックですstart
with end
。
別のオプションはbehavior
で、MDNはそれぞれ3つの望ましい値を提供しますauto
、instant
対smooth
。このオプションは、ページのスクロール方法を決定し、測定auto
対instant
瞬時に対応する位置にジャンプし、チェックW3C
そのような文を発見した後: 'スクロール動作の瞬時値は自動に名前が変更されました。したがって、基本的には、2つのパフォーマンスは一貫していると判断できます。およびsmooth
これはアニメーションのプロセスですが、残念ながら、互換性について話すとき、黄色は属性をサポートしておらず、behavior
値smooth
をサポートしていないと言われています。さらに、IEおよびモバイルUCブラウザーを測定した後、彼らは単にObject
Typeパラメーターをサポートしていないことを発見し、scrollIntoView({...})
デフォルトの結果、つまりscrollIntoView(true)
のみがある場合に呼び出します。簡単な例 ここを見て 体験したい場合smooth
効果を体験するには、ChromeまたはFirefoxを使用する必要があります!主なコードは次のとおりです。
'chunk'> 'btn-top'>up 'btn-bottom'>down const up = document.querySelector('.btn-top') const down = document.querySelector('.btn-bottom') const test = document.querySelector('.chunk') up.addEventListener('click', function() { test.scrollIntoView({ block: 'start', behavior: 'smooth' }) }) down.addEventListener('click', function() { test.scrollIntoView({ block: 'end', behavior: 'smooth' }) }) Copy codescrollIntoViewIfNeeded
紹介後scrollIntoView
その変種を紹介する時が来ました。scrollIntoViewIfNeeded
そうです。 2つの間に2つの主な違いがあります。まず第一にscrollIntoViewIfNeeded
それは怠惰です。要素が表示領域にある場合、呼び出されたときにページはスクロールしません。続いてscrollIntoViewIfNeeded
only Boolean
タイプパラメータ。つまり、すべてが瞬時にスクロールし、アニメーションはできません。
scrollIntoViewIfNeeded
1つを受け入れることができますBoolean
Typeパラメーター、およびscrollIntoView
different、true
デフォルトですが、上にスクロールする代わりに、要素は表示領域の中央に配置されますfalse
要素は、要素がどちら側に近いかに応じて、上部または下部に配置される場合があります。簡単な例 ここをクリックできます 。おおよそのコードは次のとおりです。
'chunk'> 'scrollIntoView'>scrollIntoView top 'scrollIntoViewIfNeeded-top'>scrollIntoViewIfNeeded top 'scrollIntoViewIfNeeded-bottom'>scrollIntoViewIfNeeded botom const scrollIntoView = document.querySelector('.scrollIntoView') const scrollIntoViewIfNeededTop = document.querySelector('.scrollIntoViewIfNeeded-top') const scrollIntoViewIfNeededBottom = document.querySelector('.scrollIntoViewIfNeeded-bottom') const test = document.querySelector('.chunk') scrollIntoView.addEventListener('click', function() { test.scrollIntoView(true) }) scrollIntoViewIfNeededTop.addEventListener('click', function() { test.scrollIntoViewIfNeeded(true) }) scrollIntoViewIfNeededBottom.addEventListener('click', function() { test.scrollIntoViewIfNeeded(false) }) Copy codeドキュメントに記載されているように、赤が表示されている場合div
表示領域の場合は完全に呼び出されますscrollIntoView()
呼び出し中にスクロールしますscrollIntoViewIfNeeded()
表示されません。そして、練習した後、ドキュメントに記載されていない詳細をいくつか見つけました。要素が表示領域にあるがすべてが表示されていない場合に呼び出されますscrollIntoViewIfNeeded()
パラメータがtrue
まだfalse
の場合、スクロールが発生し、要素にスクロールして位置合わせする効果があります要素がどちらの端に近いかに応じて、表示可能領域の上部または下部。みんな注意が必要です〜
概要
実際、このAPIは必須ではなく、その効果を実現する方法は他にもたくさんあります。ただし、条件が許せば、それを使用すると多くのお金を節約できます。JS
コードまたはアンカーの束はまだ非常にクールです。
オフィシャルをご覧いただきありがとうございます!この記事がお役に立てば幸いです。これら2つのAPIを使用することを忘れないでください。