2012-02-29 6 views

答えて

4

CSSのスタイルを "重さ" かによるところが大きいのですそれ。 ID 常には、標準のタグ名、クラス名または疑似クラスよりも多くの出現率を持っています。簡単な解決策は、アンカークラスで、他の標準要素と同じように、「アクティブな」スタイリングを適用して特定のものにすることです。基本的には:

.subactive a 

はそれがあなたのスキーマのために動作しない場合、あなたには、いくつかの他の方法をクラスにで#sidenavを回す、または回避策もするかのいずれか必要があります

#sidenav .subactive a 

になるはずです。


ところで、私が以前に言及したのは、スタイルのspecificityです。それが現在立っているとして、あなたのスタイルはそうのような重量を量る:

(a * 1000) + (b * 100) + (c * 10) + d 

勝利数が最も多いのスタイル:

#sidenav a    a=0, b=1, c=0, d=1 -> specificity = 0,1,0,1 
.subactive a   a=0, b=0, c=1, d=1 -> specificity = 0,0,1,1 
#sidenav .subactive a a=0, b=1, c=1, d=1 -> specfiicity = 0,1,1,1 

はほとんどこのように考えることもできます。

+0

セレクタレベル3は、セレクタに関連しないインラインスタイルを投げ捨てるので、4つ目の左端の値を取り除く代わりに、特異性の値のトリプレットを取得します。 – BoltClock

+0

@BoltClock:私は疲れている、またはそのコメントが不明だった。あなたは特異性に関して 'スタイル= '' 'オーバーライドをしたくないですか? –

+1

私は、特異性がセレクタを参照していることを意味していたので、インラインスタイルをカウントしてはならないため、特異度を計算するためにCSS3仕様から削除してはいけません。それらは常にCSS規則( '!important'は関係ありません)を上書きしますが、それは特異性ではなくカスケード自体です。いずれにせよ、それはちょうど興味深いものです。 – BoltClock

1

どちらか!imporatantを追加します。

.subactive a 
{ 
    color: #fff!important; 

    /**/ 

} 

または定義のspecificityを増やす:

​​

+3

私はいつも '!important'を回避しようとしています。なぜなら、それはエンドユーザのために設計された属性の1つで、アクセシビリティの場合にはスタイルを無効にするためです。実行可能ですが、できるだけそれを使用することを避けることは私の謙虚な意見です。 –

+0

合意されたので、私は '特異性'を挙げました... – xandercoded

0

私が必要でない場合、私は!importantを使用しません。それは私が

#sidenav a:hover, #sidenav .subactive a:link 

にライン

#sidenav a:hover, .subactive a 

を交換し、

.subactive a 
{ 
    color: #fff; 
    background-color: #034676; 
} 

を使用していないようです、それ以下のコードを削除します動作させるために

作業例を確認してください。http://jsfiddle.net/a4hBz/1/

+1

質問と回答は一般的に同じページにあるので、穏やかなリマインダは素晴らしいリソースです。あなたがjsFiddleに提出した解決策は参照されていますが、あなたの答えにあなたの変更が何であるかを投稿するのは良い考えです。それ以外は、SOにようこそ! –

+0

アドバイスをいただき、ありがとうございます。私は可能な限り最良の方法で質問に答える能力を磨いていきます。ありがとう – Filype

関連する問題