CSSはプログラミング言語ではないため、代わりに、プログラムの変数データを含む構成ファイルです。
現在、CSSは非常に強力であるため、実際にプログラミングできますが、それはポイントです。本質的には、まだスタイルシート言語です。
一歩後退しましょう。画面に描画できるプログラミング言語があるとします。Webページを描画するようにプログラムしたいと想像してください。
最初は、コードに大量のマジックナンバーを入力します。マージンの幅、テキストの高さ、インデントなど。
jump(100) // The margin
drawTable(500, 500)
writeText("Hello World", 12)
そのため、マジックナンバーを抽出し、それらをファイルの先頭に配置します。
int margin = 100
int table = 500
int text_size = 12
jump(margin) // The margin
drawTable(table, table)
writeText("Hello World", text_size)
これは少しいです。むしろ、構成ファイルから変数番号を読み取ります。
margin 100
table 500
text size 12
うーん、それは少し不明瞭です...これらの数字はどういう意味ですか?それらの名前はどういう意味ですか?少し形式化しましょう。
margin_left 10em
table_width 500px
table_height 500px
font_size 12px
しかし、ご存知のように、プログラムを少し拡大したいと思います。また、複数のテーブルを含むページ、テーブルを含まないページ、段落またはボタンを含むページなどを描画することも必要です。構成ファイルにセレクターを追加して、より大きなフォントまたは異なるテキスト色を持つ段落を指定できるようにします。ネストされた要素をサポートできます。構成ファイルで一般的なプロパティを使用し、特定のいくつかのネストされた要素に1つ。
これがどこに向かっているのかを感じ、最終的にCSSとして到着します。(そしてそれをレンダリングするブラウザ。)
マジックナンバーを再度回避できるように、構成ファイルに機能を追加する必要がありますか?変数を追加しますか?CSSファイルの構成ファイルを追加しますか?CSSファイルが既にまったく同じ構成ファイルであることを覚えていると、少し無意味に感じます。
しかし、それはもちろん真実ではありません。CSSファイルはどんどん大きくなり、最終的には元のマジックナンバーと同じ問題に遭遇します。同じ番号が場所全体で繰り返され、場合によっては小さな変換などが発生します。
ただし、最新のCSSでは、この繰り返しを回避する多くの方法が許可されています。多くの要素に適用されるクラスを使用でき、すべてdiv
のsにスタイルを設定できますが、特定の1つをオーバーライドできます。CSS3では、ある種の変数の使用も許可されます。
これは、可能なすべての場所でCSS変数の使用を開始する必要があるという意味ではありません。理にかなっている場所で使用し、重複を避けたり、他の手法も利用できない場合に使用します。
最終的には、構成ファイルにあまりにも多くのマジックナンバーが必要ではありません:-)