2011-03-04 18 views
75

複数のクラスを持つ要素を持つHTMLがあり、同じクラスが異なるコンテナ内で異なるように、1つのルール内にそれらを割り当てる必要があります。私はCSSでこれを持って言う:1つのルール内に複数のクラスを持つターゲット要素

.border-blue { 
    border: 1px solid blue; 
} 
.background { 
    background: url(bg.gif); 
} 

その後、私は私のHTMLでこれを持っている:

<div class='border-blue background'>Lorum Crap No-one Cares About Ipsum</div> 

は、私は単一のルール内でこれらをターゲットにすることはできますか?このように、例えば、私が知っている動作しません:

.border-blue, .background { 
    border: 1px solid blue; 
    background: url(bg.gif); 
} 

答えて

109

.border-blue.background { ... }は複数のクラスを持つ一つのアイテムです。
.border-blue, .background { ... }は、それぞれ独自のクラスを持つ複数のアイテム用です。
.border-blue .background { ... }は、 '.background'が '.border-blue'の子である1つのアイテム用です。

さらに詳しい説明はChris' answerを参照してください。

+2

ありがとうございます!これが可能かどうかは分かりませんでしたので、私はここで調べるよう求めていました。 –

+0

あなたの状況に適していますか? –

+0

喜んでお手伝いします:) –

145

上記の2つのバリエーションは、使用方法が異なるためです。

<div class="blue-border">Hello</div> 
<div class="background">World</div> 
<div class="blue-border background">!</div> 

がすべて青になるだろう:あなたは、たとえば、青のボーダーや背景クラスのいずれかを持っている要素にスタイルを追加したいときのために

.blue-border, .background { 
    border: 1px solid #00f; 
    background: #fff; 
} 

があります境界線と白い背景が適用されます。

ただし、受け入れられる回答は異なります。

.blue-border.background { 
    border: 1px solid #00f; 
    background: #fff; 
} 

この

は、両方のクラスを持つ要素にスタイルを適用し、この例ではこれだけ(適切にCSS解釈のブラウザで)適用されるスタイルを取得する必要があり、両方のクラスと <div>:だから

<div class="blue-border">Hello</div> 
<div class="background">World</div> 
<div class="blue-border background">!</div> 

を基本的にはこのように考えると、コンマ区切りは、クラスまたは別のクラスの要素に適用され、ドット区切りは、クラスと別のクラスの要素に適用されます。

+9

のように、クラスをカンマで区切る必要があります。これは私がほとんど読まなかった非常に有益な答えでした。乾杯! – psicopoo

+1

ちょっと注意してください。 '.blue-border.background'にはスペースがありません。 – Knu8

+1

'それをANDとOR'と考えてください。私は、 '.x .y'は' y && ancestors.has(x) 'と考えることができると付け加えるかもしれません。 –

関連する問題