国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
フリップとワアピ
ひっくり返して反応します
注意すべきこと
100ミリ秒以內(nèi)に滯在します
不必要なレンダリング
レイアウトの揺れ
アニメーションがキャンセルされました
ブラウザと戦わないでください
図書館
リソースと參照
ホームページ ウェブフロントエンド CSSチュートリアル 反応のフリップアニメーションについて知っておくべきことすべて

反応のフリップアニメーションについて知っておくべきことすべて

Apr 05, 2025 am 09:12 AM

反応のフリップアニメーションについて知っておくべきことすべて

最新のSafariアップデートの後、WebアニメーションAPI(WAAPI)は、すべての最新のブラウザー(IEを除く)にフラグなしでサポートされています。ブラウザがサポートする機(jī)能を確認(rèn)できる便利な例を次に示します。 WAAPIは、ネイティブAPIに屬しているため、アニメーションを?qū)g行するのに最適な方法です(JavaScriptで実行する必要があります)。つまり、追加のライブラリなしで機(jī)能することを意味します。 Waapiがまったく知らない場(chǎng)合は、Dan Wilsonが提供する紹介の非常に良い紹介をご紹介します。

Flipは、最も効果的なアニメーションメソッドの1つです。 Flipには、実行するにはJavaScriptコードが必要です。

WAAPIを使用して交差點(diǎn)を見て、反転して反応に統(tǒng)合しましょう。しかし、私たちは最初に反応せずに始め、次に反応するために移行します。

フリップとワアピ

Waapiはフリップアニメーションを簡(jiǎn)単にします!

フリップクイックレビュー:コアのアイデアは、まず、それを終わらせたい場(chǎng)所を要素を配置することです。次に、変換を適用して開始位置に移動(dòng)します。次に、これらの変換をキャンセルします。

アニメーション変換は非常に効率的であるため、フリップは非常に効率的です。 WAAPIの前に、要素のスタイルを直接操作して変換を設(shè)定し、次のフレームがキャンセル/反転するのを待つ必要があります。

 // waapiの前にフリップします
el.style.transform = `translatey(200px)`;

RequestAnimationFrame(()=> {
  el.style.transform = '';
});

多くのライブラリがこのアプローチに基づいて構(gòu)築されています。ただし、これにはいくつかの問題があります。

  • すべてが大きなハックのように感じました。
  • フリップアニメーションの逆転は非常に困難です。クラスが削除されると、CSS変換は「無料」に逆転しますが、これはここではそうではありません。以前のアニメーションが実行されている間に新しいフリップを開始すると、失敗が発生します。反転では、変換マトリックスをGetComputedStylesを使用して解析し、新しいアニメーションをセットアップする前に現(xiàn)在のサイズを計(jì)算するために使用する必要があります。
  • 高度なアニメーションはほとんど不可能です。たとえば、スケーリングされた親の子の歪みを防ぐには、各フレームで現(xiàn)在のスケーリングされた値にアクセスする必要があります。これは、変換マトリックスを解析することによってのみ行うことができます。
  • ブラウザには注意を払うことがたくさんあります。たとえば、Firefoxで完全にフリップアニメーションを?qū)g行するには、RequestAnimationFrameを2回呼び出す必要があります。
 RequestAnimationFrame(()=> {
  RequestAnimationFrame(()=> {
    el.style.transform = '';
  });
});

WAAPIを使用する場(chǎng)合、これらの問題に遭遇しません。逆関數(shù)は簡(jiǎn)単に逆転できます。子供の逆スケーリングも可能です。エラーが発生した場(chǎng)合、Culpritを見つけるのは簡(jiǎn)単です。これは、RequestAnimationFrameメソッドなどのさまざまなものを調(diào)べる代わりに、アニメーションやリバースなどの単純な関數(shù)のみを使用するためです。

WAAPIバージョンの要約は次のとおりです。

 el.classlist.toggle( 'someclass');
const keyframes =/*サイズ/位置差を計(jì)算*/;
el.anime(keyframes、2000);

ひっくり返して反応します

Flip AnimationsがReactでどのように機(jī)能するかを理解するには、純粋なJavaScriptでどのように機(jī)能するを知ることが重要です。フリップアニメーションの構(gòu)成を思い出してください:

紫色の背景を持つすべてのコンテンツは、レンダリングの「描畫」ステップの前に発生する必要があります。それ以外の場(chǎng)合は、新しいスタイルが一時(shí)的に點(diǎn)滅するのがわかりますが、これは良くありません。 Reactでは、すべてのDOMの更新が私たちによって行われるため、狀況はわずかに複雑になります。

フリップアニメーションの魔法は、ブラウザが描く機(jī)會(huì)がある前に要素が変換されることです。それでは、反応の「描く前」の瞬間をどうやって知るのでしょうか?

useLayoutEffectフックを見てみましょう。あなたがそれが何であるかを知りたいなら…これはそれです!このコールバックで合格するものはすべて、DOMの更新後に描畫する前に同期して発生します。言い換えれば、これはフリップをセットアップするのに最適な場(chǎng)所です!

Flip Technologyが非常に優(yōu)れていることをやりましょう:アニメーションDOMポジション。要素が1つのDOM位置から別のDOM位置にどのように移動(dòng)するかをアニメーション化したい場(chǎng)合、CSSにできることは何もありません。 (To-Doリストのタスクを完了し、以下の例のプロジェクトをクリックするのと同じように、完成したタスクリストに移動(dòng)することを想像してください。)

最も簡(jiǎn)単な例を見てみましょう。次の例で2つのブロックのいずれかをクリックすると、位置を交換します。フリップがなければ、すぐに起こります。

やることがたくさんあります。ライフサイクルフックのコールバック內(nèi)ですべての作業(yè)がどのように発生するかに注意してください: useEffectuseLayoutEffect 。少し混亂を招くのは、フリップアニメーションのタイムラインが2つのReactレンダリングで発生するため、コード自體からは明らかではないということです。以下は、React Flipアニメーションの構(gòu)成で、さまざまな操作シーケンスを表示します。

useEffect常にuseLayoutEffectの後に実行され、ブラウザの描畫後に実行されますが、最初のレンダリング後に要素の位置とサイズをキャッシュすることが重要です。 useLayoutEffectすべてのDOMの更新の後に実行されるため、2番目のレンダリングでこれを行う機(jī)會(huì)はありません。しかし、このプロセスは基本的に通常のフリップアニメーションと同じです。

注意すべきこと

ほとんどのことと同様に、反応でフリップを使用するときに考慮すべきことがいくつかあります。

100ミリ秒以內(nèi)に滯在します

フリップアニメーションは計(jì)算です。計(jì)算には時(shí)間がかかります。スムーズな60fps変換を示す前に、かなりの作業(yè)を行う必要があります。遅延が100ミリ秒未満の場(chǎng)合、人々は遅延に気付かないので、すべてがこの値を下回っていることを確認(rèn)してください。 DevToolsのパフォーマンスタブは、このコンテンツを確認(rèn)するのに最適な場(chǎng)所です。

不必要なレンダリング

setState不必要なレンダリングを引き起こし、アプリケーションを遅くするため、 useStateサイズ、位置、およびアニメーションオブジェクトをキャッシュすることはできません。最悪の場(chǎng)合、エラーにつながる可能性があります。代わりにuseRefを使用して、何もレンダリングせずに変更できるオブジェクトとして扱ってみてください。

レイアウトの揺れ

ブラウザレイアウトの繰り返しトリガーを避けてください。フリップアニメーションのコンテキストでは、これは要素をループすることを避け、 getBoundingClientRectで場(chǎng)所を読み取り、すぐにanimateことを意味します。バッチ「読み取り」と「書き込み」できる限り。これにより、非常にスムーズなアニメーションが可能になります。

アニメーションがキャンセルされました

前のデモが移動(dòng)するときに、正方形をランダムにクリックして、停止した後にもう一度クリックしてください。欠點(diǎn)が見えます。実生活では、ユーザーは移動(dòng)するにつれて要素と対話するため、スムーズにキャンセルされ、一時(shí)停止され、更新されることを確認(rèn)する価値があります。

ただし、すべてのアニメーションをreverse使用して逆にすることはできません。時(shí)々、それらを停止してから新しい位置に移動(dòng)したい場(chǎng)合があります(たとえば、要素のリストがランダムに破壊された場(chǎng)合)。この場(chǎng)合、次のことが必要です。

  • 移動(dòng)する要素のサイズ/位置を取得します
  • 現(xiàn)在のアニメーションを完了します
  • 新しい寸法と位置の違いを計(jì)算します
  • 新しいアニメーションを開始します

反応では、これは見た目よりも難しいです。私はこの問題に取り組むのに多くの時(shí)間を無駄にしました?,F(xiàn)在のアニメーションオブジェクトはキャッシュする必要があります。良い方法は、IDでアニメーションを取得するためにマップを作成することです。次に、移動(dòng)する要素のサイズと位置を取得する必要があります。これを行うには2つの方法があります。

  1. 関數(shù)コンポーネントの使用:関數(shù)の本體の各アニメーション要素をループし、現(xiàn)在の位置をキャッシュします。
  2. クラスコンポーネントの使用: getSnapshotBeforeUpdateライフサイクルメソッドを使用します。

実際、公式のReactドキュメントでは、「レンダリングフェーズのライフサイクル( renderなど)とコミットフェーズのライフサイクル( getSnapshotBeforeUpdatecomponentDidUpdateなど)の間に遅延がある可能性があるため、 getSnapshotBeforeUpdateを使用することを推奨しています。

ブラウザと戦わないでください

前に言ったことがありますが、ブラウザに立ち向かわないようにして、ブラウザのやり方で物事を?qū)g現(xiàn)しようとします。単純なサイズの変更をアニメーション化する必要がある場(chǎng)合は、CSSで十分かどうかを検討します(たとえば、 transform: scale() )。フリップアニメーションは、ブラウザが本當(dāng)に役に立たない場(chǎng)所に最適であることがわかりました。

  • アニメーションDOM位置の変更(上記のように)
  • 共有レイアウトアニメーション

2番目は、最初のバージョンのより複雑なバージョンです。 1つ全體として機(jī)能し、その位置を変更する2つのDOM要素があります(もう1つはアンインストール/非表示)。このトリックは、いくつかのクールなアニメーションを?qū)g現(xiàn)できます。たとえば、このアニメーションは、この方法を使用するReact-Easy-Flipと呼ばれる私が構(gòu)築したライブラリで作られています。

図書館

Reactのフリップアニメーションをより簡(jiǎn)単で抽象的なボイラープレートコードにすることができる多くのライブラリがあります?,F(xiàn)在積極的に維持されているライブラリには、 react-flip-toolkitと私のライブラリreact-easy-flip含まれます。

より重いが、より一般的なアニメーションが可能なものを気にしない場(chǎng)合は、 framer-motionをチェックしてください。また、クールな共有レイアウトアニメーションも可能です!ライブラリを詳細(xì)に探索するビデオがあります。

リソースと參照

  • ジョシュ?W?コモーのアニメーションはアニメーションではありません
  • Paul LewisとStephen McGruerによる高性能の拡張と折りたたみアニメーションの構(gòu)築
  • マット?ペリーによる「魔法の動(dòng)き」
  • @KeyFramersは「JavaScriptからのアニメーションCSS変數(shù)を使用」とツイートします
  • コサカのマリコの「最新のウェブブラウザの內(nèi)部リスト(パート3)」
  • Alex HolachekのSimple Build Complex UI Animation in React
  • David Khourshidの「フリップテクノロジーを使用したレイアウトのアニメーション」
  • Kirill Vasiltsovの「Fluent Animation with React Hooks」
  • Jayant Bhawalの「共有要素変換のためのReactフックを使用」

この改訂された出力は、テキストを言い換えて一意のコンテンツを作成しながら、元の畫像形式と配置を維持します。また、いくつかの小さな文法的および文體的な問題に対処しています。

以上が反応のフリップアニメーションについて知っておくべきことすべての詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國(guó)語版

SublimeText3 中國(guó)語版

中國(guó)語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

「レンダリングブロッキングCSS」とは何ですか? 「レンダリングブロッキングCSS」とは何ですか? Jun 24, 2025 am 12:42 AM

ブラウザは、特にインポートされたスタイルシート、ヘッダーのインラインCSS、および最適化されていないメディアクエリスタイルを使用して、ブラウザがインラインおよび外部CSSをデフォルトで主要なリソースとして表示するため、ページレンダリングをブロックします。 1.重要なCSSを抽出し、HTMLに埋め込みます。 2。JavaScriptを介して非クリティカルなCSSの読み込みを遅らせる。 3.メディア屬性を使用して、印刷スタイルなどのロードを最適化します。 4.リクエストを減らすためにCSSを圧縮およびマージします。ツールを使用してキーCSSを抽出し、REL = "Preload"非同期負(fù)荷を組み合わせ、過度の分割と複雑なスクリプト制御を避けるためにメディア遅延荷重を合理的に使用することをお?jiǎng)幛幛筏蓼埂?/p>

外部対內(nèi)部CSS:最良のアプローチは何ですか? 外部対內(nèi)部CSS:最良のアプローチは何ですか? Jun 20, 2025 am 12:45 AM

TheBestAppRoachforCSDependsonTheProject'sSpecificNeeds.forLargerProjects、externalCssissisbetterduetoMaintainasiladability; forsmallerProjectsOrsingLe-PageApplications、internalcsSmightBemoresuitable.it

私のCSSは小文字でなければなりませんか? 私のCSSは小文字でなければなりませんか? Jun 19, 2025 am 12:29 AM

いいえ、CSSDOESNOTHAVETOBEINLOWERCASE。

CSSケース感度:重要なことを理解する CSSケース感度:重要なことを理解する Jun 20, 2025 am 12:09 AM

cssismostlycase-inssensitive、buturlsandfontfamilynamesarecase-sensitive.1)propertiesandvalueslikecolor:red; areotcase-sensitive.2)urlsmustmatchtheserver'scase、例えば、/畫像/logo.png.3)

Autoprefixerとは何ですか?それはどのように機(jī)能しますか? Autoprefixerとは何ですか?それはどのように機(jī)能しますか? Jul 02, 2025 am 01:15 AM

Autoprefixerは、ターゲットブラウザスコープに基づいてCSS屬性にベンダープレフィックスを自動(dòng)的に追加するツールです。 1.エラーで接頭辭を手動(dòng)で維持する問題を解決します。 2. PostCSSプラグインフォーム、CSSを解析し、プレフィックスする必要がある屬性を分析し、構(gòu)成に従ってコードを生成する屬性を分析します。 3.使用手順には、プラグインのインストール、ブラウザーリストの設(shè)定、ビルドプロセスでそれらを有効にすることが含まれます。 4。メモには、接頭辭を手動(dòng)で追加しない、構(gòu)成の更新を保持すること、すべての屬性ではなくプレフィックスを維持することが含まれ、プリ??プロセッサでそれらを使用することをお?jiǎng)幛幛筏蓼埂?/p>

CSSカウンターとは何ですか? CSSカウンターとは何ですか? Jun 19, 2025 am 12:34 AM

csScountersCantAnationally-bersectionSandLists.1)usecounter-resettoinitialize、counter-incrementtoincrease、andcounter()orcounters()todisplayvalues.2)を組み合わせたjavascriptfordynamiccontenttoensureaCurateupdatesと組み合わせます。

CSS:ケースはいつ重要ですか(いつそうではありませんか)? CSS:ケースはいつ重要ですか(いつそうではありませんか)? Jun 19, 2025 am 12:27 AM

CSSでは、セレクターと屬性名はケースに敏感ですが、値、名前の色、URL、およびカスタム屬性はケースに敏感です。 1.バックグラウンドカラーや背景色など、セレクターと屬性名はケース非感受性です。 2。値の16進(jìn)數(shù)色は大文字と小文字を區(qū)別しますが、赤と赤などの名前の色は無効です。 3. URLは癥例に敏感であり、ファイルロードの問題を引き起こす可能性があります。 4.カスタムプロパティ(変數(shù))はケースに敏感であり、使用する場(chǎng)合はケースの一貫性に注意を払う必要があります。

conic-gradient()関數(shù)とは何ですか? conic-gradient()関數(shù)とは何ですか? Jul 01, 2025 am 01:16 AM

TheConic-Gradient()functionsscreateScular勾配の勾配は、測(cè)定されていることを確認(rèn)してください

See all articles