私はベストプラクティスの答えを探しています。現在、私のウェブサイトのナビゲーションバーにドロップダウンメニューを追加しようとしています。私はCSSを使用してそれを行うことができ、JS - Angularを使用して行うこともできることを発見しました。私はそれを読んだことがあるので、JS悪意のあるものは、JSを無効にするいくつかの人々をプログラムすることができます。したがって、より多くのコンピュータにあなたのウェブサイトの機能を維持するには、CSSでプログラミングする必要があります。これにメリットはありますか?可能な限りJSでのコーディングを避けるべきですか?できるだけJSを避け、代わりにCSSを使うべきですか?
答えて
CSSを使用してCSSを使用することを好む理由はほとんどありません。
- CSSアニメーションは、JS アニメーションと比較してパフォーマンスがはるかに優れています。 CSSはアニメーションをレンダリングするためにJSと同じくらい多くのメモリを消費しません。
- アニメーションが画面の幅に依存する場合、CSSメディアクエリーは遅れなくチャームのように機能します。しかし、JSを使用してこれを達成する必要がある場合は、イベントをウィンドウサイズにバインドし、すべてのサイズ変更でアクションを実行する必要があります。
- JavaScriptアニメーションはCSSアニメーションよりもわずかに高いオーバーヘッドを持っています。なぜなら、最終的にJSアニメーションはアニメーションのCSSスタイルを操作するためです。
しかし、彼らの言うように、あらゆる利点には欠点があります。 CSSアニメーションは、アニメーションを自由に実行することはできません。スケール、回転、及び要素の位置をアニメート
は非常に一般的です。 CSSでは、それらはすべて1つの「変換」プロパティに詰め込まれており、単一の要素上で本当に異なる方法でアニメーション化することは不可能です。たとえば、 "回転"と "スケール"を別々のタイミングと簡単にアニメートする場合はどうでしょうか?たぶん要素が連続的に脈動していて、ロールオーバで回転させたいと思うかもしれません。それはJavaScriptでのみ可能です。
参考:Myth Busting: CSS Animations vs. JavaScript
あなたはJSアニメーションの柔軟性とCSSアニメーションの速度が必要な場合は、JavaScriptの上に構築されており、CSSアニメーションよりもはるかに高速ですされ、GSAPを試してみてください。Hereは、CSSアニメーション(Zeptoを使用)、jQueryアニメーション、GSAPアニメーションを比較したパフォーマンステストです。忘れてはならないが、結果はレンダリングエンジンごとに異なる可能性がある。
結論: これはあなたがそれについて行く方法です。
簡単なアニメーション、CSSの達成可能:使用CSS
簡単なアニメーションは、CSSで実現することができない:使用JS
ヘビーアニメーション:使用GSAPをかrequestAnimationFrame
であなたのアニメーションを作ります。
Hereは、CSSアニメーションとJSの実装の間の驚くべきパフォーマンスの比較です。
CSSは、(X)HTML文書のスタイルを設定する最善の方法です。
生のJavaScriptやDOM、またはjQueryのようなフレームワークを使用してドキュメントをスタイルする必要がある場合でも、CSSルールに値を渡すことになります。
ルールは次のようになります。あなたが予測可能なドキュメントのスタイルを設定することができます
使用純粋なCSSは - また、あなたのCSSを強化し、一般化や複雑なシナリオのためのCSSセレクタを使用することができます - 。 JavaScriptのようなJavaScript/DOMやフレームワークを使用すると、ドキュメントやその一部が予測不可能になったり、オンザフライで作成されたり、フェードやその他の特殊効果を適用している場合 - 実際、CSS 3.0ではトランジションが可能ですJavaScriptなしでたくさんのことをする - 。 結局のところ、CSSを使って簡単にできることや、JavaScriptを代わりに使っているような過酷なことを考え、その短所(ブラウザの互換性とパフォーマンス)を念頭に置いてください。
より多くのCSSを使用するほど、より標準化されたクロスブラウザ、パフォーマンス、保守性の高いWebです。
Cssはブラウザの互換性の問題からあなたを救いません。 – leaf
- 1. サブドメインを使用するか避けるべきですか?
- 2. sscanfの代わりに何を使うべきですか?
- 3. VBAの代わりにPythonを使うべきですか?
- 4. isinstance()の代わりに何を使うべきですか
- 5. LoadWithPartialName()の代わりに何を使うべきですか?
- 6. セッションの代わりに何を使うべきですか?
- 7. Sqlalchemy bindparamの代わりにliteral_columnを使うべきですか?
- 8. javapackagerは.dmgの代わりに.appだけを生成できますか?
- 9. アクティビティクラスの外で `startActivity`を避けるべきでしょうか?
- 10. Monadの使用を避けるべきですか?
- 11. 複合主キーはできるだけ避けますか?
- 12. const&iterator、またはiteratorだけを使うべきですか?
- 13. iPhoneで再帰を避けるべきですか?
- 14. Perlでprintfの代わりに何を使うべきですか?
- 15. すべてのサイトプラグインjsとcssファイルを縮小して結合します(できるだけw3tcを使用)
- 16. JS「できるだけ早く」状態
- 17. Qt:QMatrixの代わりにどのクラスを行列に使うべきですか?
- 18. Powershellスクリプトの 'dir'エイリアスを避けるべきですか?
- 19. Python 2 + 3互換コード:6を避けるべきですか?
- 20. JS Uglify2でできるだけファイルを圧縮するには?
- 21. OSXではlocalhost:8090の代わりにlocalhostだけをJettyで使う方法はありますか?
- 22. Python:いつos.popenの代わりにsubprocess.Popenを使うべきですか?
- 23. 辞書の代わりにいつnamedtupleを使うべきですか?
- 24. なぜjqueryの代わりにreactjsを使うべきですか?
- 25. なぜIPC/Simple websocketの代わりにgRPCを使うべきですか?
- 26. MongoDBのJoinの代わりに何を使うべきですか
- 27. いつSQLiteの代わりにNSKeyedArchiverを使うべきですか?
- 28. CSSを使わずに、ブートストラップ3だけでfont-familyを変更することはできますか?
- 29. Javaではオートボクシングを避けるべきです
- 30. JekyllでSASSの代わりにプレーンCSSを使用できますか?
あなたは何をしているかによって、開発者の意見が異なり、インタラクティブなWebエクスペリエンスの作成にCSSには限界があります。他の何かを検討するには、ある種の新しい/実験的なCSS機能を使用する場合、同様に、ブラウザの不自然なサポートのために、サイトを適切に使用することから重要な人口を切り捨てることができます。この質問には明確な答えはありません。 (静的なリンクだけで構成されたかなり非対話的なサイトを構築したいのでない限り、アニメーションGIFは、誰かが下位のUXを取得しようとしています)。 – Serlite
これまでの回答はお互いに同意していることが示されており、CSSは以下の回答の理由からベストプラクティスです。もちろん例外はありますが、いつもありますが、一般的に私の質問への答えは可能な限りCSSを使うことです。 – Vindictive
IE6以降、完全なCSSドロップダウンメニューを作成できますが、js(Ajaxなど)を避けることができない多くのケースがあります。 Btw私は答えに同意しない。私は "主に意見に基づいて"と "あまりにも広い"の間で選択することはできません: -/ – leaf