スクロヌル技術の抂芁

Webペヌゞのスクロヌルに関連するアニメヌションは、長幎䜿甚されおいたす。最近、そのようなアニメヌションがより䞀般的になっおいたす。おそらくこれの䞀郚は、むンタヌネットをサヌフィンするために䜿甚されるデバむスがより匷力になったためです。これらのデバむスは、以前よりも倚くの芖芚効果を適切に凊理および出力できたす。 倚くのスクロヌル技術がありたす。この蚘事の目的は、特定の状況ごずに必芁なものを遞択および䜜成するのに圹立぀、このようなテクノロゞヌずツヌルの抂芁を提䟛するこずです。私は、スクロヌル技術を2぀の倧きなカテゎリヌに分けたす。1぀目は特定のスクロヌルメカニズムを実装するためのテクノロゞヌを含み、2぀目は汎甚スクロヌルテクノロゞヌを含みたす。











特定のスクロヌルメカニズムを実装するためのテクノロゞ



CSSには、最新のブラりザヌでサポヌトされおいる単玔な暙準スクロヌル効果がいく぀かありたす。堎合によっおは、それらのアプリケヌションはプロゞェクトの特定のニヌズを満たすのに十分かもしれたせん。



▍CSSプロパティの䜍眮スティッキヌ



残りのペヌゞコンテンツず䞀緒にスクロヌルしない芁玠が必芁な堎合は、この芁玠のスタむルを蚭定するずきに、プロパティを適甚するだけで十分position: stickyです。これはシンプルで単玔なトリックであり、そのサポヌトは最新のブラりザヌに組み蟌たれおいたす。しかし、これをIEや䞀郚のモバむルブラりザヌで機胜させるには、ポリフィルが必芁です。このトピックに興味がある堎合は、この資料をご芧ください。





青い芁玠はコンテナの䞊郚に「残り」、他の芁玠ず䞀緒にスクロヌルしたせん。



このようなスクロヌルの䟋を次に瀺したす。



▍芖差効果



芖差効果は、むしろ特別な技術ではなく、特別な技術です。ただし、この効果は、スクロヌル時にペヌゞのさたざたな郚分がさたざたな速床で移動する必芁がある堎合に、非垞に圹立ちたす。このテクニックは、この資料で詳しく説明されおいたす。その実装の倚くの䟋がありたす。たずえば、これ。私にずっお、この手法の䞻な欠点は、正しい芖差効果を䞎えるどの倀を䜿甚しおパヌスペクティブず倉換を蚭定するかを理解するこずが難しいこずです。





芖差効果芁玠は異なる速床で移動したす。



これが芖差効果のデモです。



specific特定のポむントたでスクロヌル



アンカヌポむントでスクロヌルを䜿甚するず、ナヌザヌが通垞のスクロヌル操䜜を完了した埌で、ブラりザヌが芁玠を特定の䜍眮に移動するこずで、芁玠の䜍眮を自動的に調敎できたす。これは、スクロヌルの終了埌、特定の芁玠が完党にナヌザヌの芖野に入る必芁がある堎合に圹立ちたす。ただし、APIはただ䞍安定であるため、最新の実装を䜿甚しお、本番環境でのスクロヌルにこのアプロヌチを䜿甚する堎合は泚意しおください。これは、この件に関する優れた蚘事です。





ナヌザがコンテンツをスクロヌルしお、コンテナの䞊郚ボヌダヌオフ芁玠を移動した堎合、それはその党䜓が芋えるように、ブラりザが自動的に芁玠を再配眮したす。



ここでアンカヌポむントを持぀䜜品をスクロヌルする方法のデモが。



▍スムヌズなスクロヌル



JavaScriptでwindow.scrollTo メ゜ッドを䜿甚しお、たたはscroll-behavior CSSプロパティを䜿甚しおペヌゞを特定のセクションにスクロヌルする堎合、ブラりザツヌルはスムヌズスクロヌルをサポヌトしおいたす。珟圚、マりスホむヌルの動きをスムヌズにしおスムヌズスクロヌルを実装するには、特別なJavaScriptラむブラリが必芁です。ただし、このようなラむブラリを䜿甚する堎合は、他のスクロヌルテクノロゞずの通垞の盞互䜜甚を保蚌する必芁がありたす。さらに、スムヌズスクロヌルを䜿甚するこずは必ずしも良い考えではありたせん。



䞀般的なスクロヌル技術



珟圚、スクロヌル䜍眮に基づいお汎甚のスクロヌルアニメヌションをトリガヌするCSS専甚の方法はありたせん将来的には、いく぀かの汎甚のスクロヌルアニメヌションを自由に䜿えるようにするずいう提案がありたす 。その結果、スクロヌルしながら芁玠をアニメヌション化したい堎合、少なくずもいく぀かのJavaScriptコヌドを䜿甚しお、目的の効果を埗る必芁がありたす。JavaScriptを䜿甚しお芁玠をスクロヌルしながらアニメヌション化するには、2぀の方法がありたす。1぀目はIntersection Observer APIを䜿甚するこず、2぀目はむベントを凊理するこずscrollです。



the亀差オブザヌバヌAPIの䜿甚



IntersectionObserver APIを䜿甚するず、アニメヌションを開始するために必芁なのが、芁玠がビュヌポヌトに衚瀺されおいるかどうか、および芁玠のどの郚分が衚瀺されおいるかを知っおいる堎合、スクロヌルに関連するさたざたなタスクを正垞に解決できたす。 。これにより、IntersectionObserver APIは、画面䞊の芁玠の倖芳に䌎うアニメヌションを起動するための優れたツヌルになりたす。しかし、それでも、このAPIを䜿甚しお実装するこずは可胜ですが非垞に困難な効果がありたす。たずえば、芁玠の移動方向に応じお、さたざたなアニメヌションが起動したす。さらに、このAPIは、スクロヌル時に、芁玠がビュヌポヌトの䞭倮にあるずきにアニメヌションを開始する必芁がある堎合、぀たり、ビュヌポヌトに芁玠が衚瀺されない、たたは芁玠が衚瀺されない堎合には、特に圹立ちたせん。



thescrollむベントの䜿甚



スクロヌル䞭のアニメヌションの実装にむベントを䜿甚する人にずっお、scroll非垞に倧きなチャンスがありたす。この手法を䜿甚するず、スクロヌル時に、ビュヌポヌトの境界線を基準にしお芁玠の任意の䜍眮にある芁玠に圱響を䞎えるこずができたす。むベントを䜿甚scrollするず、プロゞェクトのニヌズに応じお、アニメヌションの開始ず終了の䜍眮を非垞に正確に蚭定できたす。



このため、アニメヌションをスクロヌルするこのアプロヌチは、システムに倧きな負荷をかける可胜性があるこずに泚意しおください。これは、開発者がパフォヌマンスを気にせず、むベント凊理の頻床を制限しない堎合に発生したすscroll。さらに、むベントを䜿甚するこずに決めたプログラマヌの凊分でscroll、さたざたなスクロヌルシナリオを実装できる䟿利なAPIはありたせん。そのため、倚くの堎合、むベント凊理メカニズムをscroll独自に実装する代わりに、䜜成者がむベント凊理scrollがパフォヌマンスずAPI の䞡方に䞎える圱響をすでに凊理しおいる専甚ラむブラリを䜿甚するこずが理にかなっおいたす。これらのラむブラリの䞀郚は、芁玠のサむズに問題がある堎合に開発者を支揎するこずさえできたす。



汎甚スクロヌルツヌル



開発者がペヌゞをスクロヌルするずきに実行されるアニメヌションを完党に制埡できるようにし、開発者が自分で耇雑な蚈算をせずにできるだけ簡単に生掻できるようにするこずを目的ずした匷力なスクロヌルラむブラリがいく぀かありたす。



▍ScrollMagic



ScrollMagic ラむブラリは、さたざたなスクロヌル効果を䜜成できる比范的シンプルなAPIを提䟛したす。このラむブラリは、GSAPやVelocity.jsなどのさたざたなアニメヌションラむブラリず連携できたす。確かに、ここ数幎、このラむブラリは十分にサポヌトされおいたせん。これにより、ScrollSceneラむブラリが䜜成されたした。



▍ScrollScene



ScrollSceneは、本質的には、ScrollMagicラむブラリやIntersectionObserver APIの䜿いやすさを向䞊させるこずを目的ずしたラッパヌです。独自のバヌゞョンのScrollMagicを䜿甚しおおり、通垞のラむブラリよりもサポヌトが優れおいたす。ビデオの再生やアニメヌションに圱響を䞎えるブレヌクポむントのサポヌトなど、ここには远加の機胜がありたす。たた、このラむブラリはGSAPを䜿甚しおいたす。



▍ScrollTrigger



ScrollTrigger ラむブラリは、GSAPの公匏GreenSockプラグむンです。このラむブラリには倚数の機胜があり、そのAPIは既存のスクロヌルラむブラリの最も単玔なAPIのようです。このラむブラリを䜿甚するず、スクロヌルアニメヌションの開始䜍眮ず終了䜍眮を完党に制埡でき、スクロヌル䞭に必芁なものWebGL、キャンバス、SVG、DOMをアニメヌション化でき、アニメヌションの実行䞭に芁玠を固定できたす。このラむブラリの機胜はこれに限定されたせん。さらに、GreenSockはこのラむブラリをサポヌトしおいたす。GreenSock フォヌラムでラむブラリの䜿甚に関するヘルプを入手できたす。



▍泚目のラむブラリ機関車スクロヌル



Locomotive Scroll ラむブラリヌは、これたでに説明した他のラむブラリヌほど幅広い機胜セットを提䟛しようずはしおいたせん。その䞻な目暙は、スムヌズなスクロヌルの実装です。さらに、属性を䜿甚しおDOMオブゞェクトの䞀郚のプロパティをアニメヌション化したりdata-*、ハンドラヌonscrollを䜿甚しお他のタむプのオブゞェクトをアニメヌション化したりできたす。



テクノロゞヌずツヌルの比范



以䞋は、スクロヌル技術の比范です。



亀差オブザヌバヌAPI スムヌズなスクロヌル CSSのアンカヌポむント  CSS芖差効果 CSSプロパティの䜍眮スティッキヌ
芁玠の固定 - - - - +
芖差効果 - - - + -
アニメヌションのダむナミクスの制埡 ± - - ± -
チェックポむントの䜿甚 ± - + - -
アむテムの動的バッチ凊理 + - - - -
氎平スクロヌル効果のサポヌト + + + + +
制䜜に適しおいたす適切なブラりザヌサポヌト ± ± ± + ±
アニメヌションの完党な自由 - - - - -
開発者サポヌト n / a n / a n / a n / a n / a
DOM、Canvas、WebGL、SVGの操䜜 + - - - -
芁玠のサむズ倉曎のサポヌト + + + + +
アニメヌションを関連するセクションのみに制限したす。 + + + - +
スクロヌル方向を区別したす ± - - - -
ブラりザに組み蟌たれたテクノロゞヌ + + + + +


以䞋は、レビュヌされたラむブラリの比范です。



Scrolltrigger 機関車スクロヌル ScrollScene スクロヌルマゞック
芁玠の固定 + ± + +
芖差効果 + + + +
アニメヌションのダむナミクスの制埡 + ± ± ±
チェックポむントの䜿甚 + ± ± ±
アむテムの動的バッチ凊理 + - + -
氎平スクロヌル効果のサポヌト + + + +
制䜜に適しおいたす適切なブラりザヌサポヌト + ± + +
アニメヌションの完党な自由 + ± + +
開発者サポヌト + + + -
DOM、Canvas、WebGl、SVGで動䜜したす + ± + +
芁玠のサむズ倉曎のサポヌト + + + ±
アニメヌションを関連するセクションのみに制限したす。 + - ± ±
スクロヌル方向を区別したす + ± + +
ブラりザに組み蟌たれたテクノロゞヌ - - - -


抂芁



芁玠の固定や芖差効果などの特別なスクロヌルメカニズムを実装するには、暙準のCSS機胜で十分な堎合がありたす。察応するCSS機胜をサポヌトしないブラりザヌにポリフィルを䜿甚する堎合、少なくずもこれは圓おはたりたす。



私は通垞、ScrollTriggerラむブラリを䜿甚しおスクロヌルをカスタマむズするこずをお勧めしたす。これにより、玔粋なCSSで可胜なすべおの機胜を実珟できたす。このラむブラリは、特定のテクノロゞのブラりザサポヌトを凊理し、蚈算をより簡単に実行できるようにしたす。これにより、ラむブラリを䜿甚する人は、自分のビゞネスに取り掛かるこずができたす。



プロゞェクトでスクロヌルを蚭定するずきにどのテクノロゞヌを䜿甚したすか






All Articles