まず第一に、「minheightstyle」のような視覚的な意図を示唆する名前を使用して CSS クラスにタグを付けないでください。CSS の背後にあるアイデアの一部は、コンテンツとスタイルを分離することです。これは、表示するクラス名で無効にしようとする実証済みの利点です。したがって、これが最初の経験則です。要素にタグを付けたい場合は、スタイリングのためだけにタグを付けるのではなく、その要素がコンテンツに関して他の要素とどのように異なるかから手がかりを得てタグを付けます。たとえば、3 つdiv
の で、すべてが似ている場合、それらを親の子として選択できるはずです。たとえば、次のようになります。
#parent > div {
min-height: 300px;
}
これらのいずれかが (たとえば) 選択されたメニュー項目である場合、「選択された」クラスを指定し、それに応じてスタイルを設定できます。
.selected {
min-height: 300px; }
一般に、スタイルについて考えるのではなく、セレクターを設計するときは構造について考えるようにしてください。これはおそらく、より単純な手段に頼って破棄するアドバイスの一部ですが、今日 Web デザインに真剣に取り組んでいる場合、これが最善の投資であることを保証します。コンテンツとスタイルの分離は絶対に不可欠であり、今日の HTML と CSS だけでなく、他の分野にも関連しています。
そして第二に、あなたが書いたルールはブラウザーによって奴隷的に適用されることを覚えておくべきです。つまり、あなたのスタイルシートでオーバーライドされる要素は、CSS の仕様に従って、それが何であれ、そのスタイルを再計算する必要があります。つまり、(たとえば)次のセレクターですべての要素のスタイルをオーバーライドすることにした場合:
* {
margin: 0; padding: 0; }
..ブラウザが独自の小さなマージンとパディングをあちこちに適用する間の小さな矛盾にうんざりしていると判断し、ページのマージンとパディングを厳密に制御したい場合は、ブラウザがバインドすることを知っておく必要があります。上記のルール (その場でスタイルを計算するか、後でそれを延期するか) を各要素に適用します。これを知っていると、上記のルールをいくつかの要素だけに適用する方が良いかどうかを判断する必要があります。通常、同じ理由が背景画像にも当てはまります。背景色を要素の子に適用するのと、単純に要素自体に適用するのとではどちらがよいでしょうか (結果は視覚的に区別できないことがよくあります)。
<div id="menu">
<div>Apples</div>
<div>Oranges</div>
<div>Bananas</div>
</div>
#menu > div {
background-color: brown;
}
また
#menu {
background-color: brown;
}
当面の問題に関しては、経験則として、マークアップとスタイルの両方を含めてコードを最小限に抑えることをお勧めします。子の同一のクラス名を取り除きます。CSS は、クラス名なしでこれらを完全に選択できます。
<div id="foo">
<div>my text in red bg</div>
<div>my text in blue bg</div>
<div>my text in grey bg</div>
</div>
#foo > div
{
min-height: 300px;
float: left;
}
#foo > div:nth-child(1)
{
color: red;
}
#foo > div:nth-child(2)
{
color: green;
}
#foo > div:nth-child(3)
{
color: blue;
}
もちろん、上記のものを選択する方法は他にもありますが、CSSが実際にどのように機能するかの知識を適用してみてください。詳細からの抽象化は良いことですが、最適化にはその詳細に関する知識が必要です。マークアップをデザインするときは、スタイルについて考えないようにしてください。作成者 (あなたの) スタイルが常に無効になるかのように入力するか、コンテンツを念頭に置いて要素にタグを付けて入力してください。次に、CSS を適用し、レビュー (「ラッパー」が必要になることがよくありますが、最近の Web 開発者の生活ではこれが一般的です) を繰り返します。ただし、コンテンツとスタイルを別々に保つようにしてください。一方を変更しても、他方への影響は最小限に抑える必要があります。