2012-02-08 16 views
0

私はかなり一般的なCSS継承状況であると思われますが、私はそれが思ったように動作していない理由を理解していません。ここでシンプルなCSS継承で困惑しました

は継承がだから私は 『#mainContentのP』のスタイルをオーバーライドします「.homeBoxのP」のために自分のスタイルを期待Chromeウェブデバッガ

Inherit

から見たように見えるものです。そして、まだ...

Cancelled Style

#mainContent Pのスタイルは.homeBox pを上書きします。何がありますか?

+2

をこれが正しい動作です、それはあまり具体的に上書きされますので、 '#mainContentのp'は.homeBoxのp''より具体的です1。 – Bazzz

+1

価値のある読書:http://coding.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/ –

答えて

2

IDスタイルはクラススタイルより優先されます。

一貫性のために、可能であればIDスタイルを使用しないようにしています。

また、サーバーサイドスクリプトで作業を開始するときにこれらを使用することを避けると、ASP.NETなどのようにIDを再レンダリングすることもできます。

+0

私が知らなかったような単純なこと。ありがとう! – Jon

1

順序は最初に特異性によって決定され、idはクラスよりも具体的です。

1

これは、#mainContentが他のセレクタよりも高い特異性を保持しているからです。その要素の最も具体的な記述であると判断され、上記のクラスに選択されています。

セレクタ支配するための規則は、W3ドキュメントで実証、かなり複雑である:​​

0

特異性、以前の回答で述べたように、正確です。最も簡単な修正はidsを使わないことです!あなたがする必要がある場合は、ネストされた要素、例えばのためにあなたのCSSを書くときに考慮にそれを取る:

#mainContent .homeBox p{font-size: 15px;} 
関連する問題