あなたはこれについて正しく考えていますが、CSS のさまざまなブラウザー実装を理解する必要があるでしょう。これは、アプリケーションが存在する環境を理解するだけです。
明確にするために: これは CSS を理解することではありません。言語をよく知っている場合でも、言語の冗長性、重複、および制御構造の欠如に対処する必要があります。
私は 10 年以上にわたってしっかりと CSS を書いてきましたが、この言語は強力で効果的ですが、CSS の実装はうまくいかないという結論に達しました。そのため、 SassやLess、xCSSなどの抽象化レイヤーを使用して、言語とのインターフェイスをとっています。これらのツールは CSS に似た構文を使用するため、問題のドメインで問題を解決しています。PHP のようなものを使用して CSS を作成することは機能しますが、最善の方法ではありません。
抽象化レイヤーを介して言語の問題を隠すことで、プロジェクトのライフ サイクル全体を通じて整合性を維持する、より優れた製品を提供できます。手で CSS を書くと、ほとんどの CSS コーダーが提供していない確かなドキュメントを提供しない限り、ソフトウェアの腐敗が加速します。十分に文書化された CSS フレームワークを作成している場合でも、いずれにせよ、それを手動で作成することはないでしょう。それは効率的ではありません。
CSS のもう 1 つの問題は、入れ子のブロック宣言がサポートされていないことです。これにより、コーダーはクラスのフラットでグローバルなセットを構築し、命名規則との名前の衝突を処理するようになります。グローバルが悪いことは誰もが知っていますが、なぜそのような方法で CSS を記述するのでしょうか? クラスをドキュメント モデル全体に公開するのではなく、クラスにコンテキストを与える方がよいのではないでしょうか? 命名規則は機能するかもしれませんが、それは、言語を作成するためにマスターしなければならないもう 1 つの作業です。
優れた CSS を書くことに誇りを持っている人は、プログラミングのベスト プラクティスをマークアップに適用することをお勧めします。抽象レイヤーを使用しても、優れた CSS を作成するスキルが不足しているわけではありません。言語の弱点にさらされる機会が限られていることを意味します。