ホームページ  >  記事  >  ウェブフロントエンド  >  CSS トランジションがインライン スタイルで機能しないのはなぜですか?それを修正するにはどうすればよいですか?

CSS トランジションがインライン スタイルで機能しないのはなぜですか?それを修正するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-29 01:28:02819ブラウズ

 Why Doesn't My CSS Transition Work With Inline Styles and How Do I Fix It?

CSS 遷移が開始されないか、コールバックが呼び出されない

問題:

JavaScript ベースのゲーム プロジェクトでは、飛び道具の動きについて jQuery アニメーションを CSS トランジションに置き換えようとしましたが、失敗に終わりました。 setTimeout 遅延を適用しても、トランジションがスキップされたり、コールバックがトリガーされませんでした。

説明:

この動作は、ブラウザーが適用されていないために発生します。トランジション プロパティを適用する前のインライン CSS スタイル。新しいスタイルが設定されても、要素の計算されたスタイルには、表示位置、左位置、上位置のデフォルト値が残ります。

左と上の値は 0px (デフォルト値) のままであるため、トランジションは何も行いません。値は新しいスタイルで設定された値と一致するためです。これを修正するには、トランジションを適用する前に、ブラウザのリフローで強制的にスタイルを更新する必要があります。

解決策:

ブラウザのリフローを強制するには、Element.offsetHeight を利用します。ゲッター。例:

<code class="js">// Assume animdiv is the element you want the transition to work on
animdiv.offsetTop;
// Now animdiv has all inline styles set

Object.assign(animdiv.style, {
  left: "100px",
  top: "100px"
});</code>

このステップにより、要素の計算されたスタイルが最新であることが保証され、トランジションが期待どおりに適用されます。

以上がCSS トランジションがインライン スタイルで機能しないのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。