2011-11-14 10 views
26

私は、次のような定義されたスタイルクラスがある場合:CSS複数のクラスのプロパティをオーバーライド

.myclass{ 
    //bunch of other stuff 
    float:left; 
} 

をし、私はこのような別のクラス定義:

.myclass-right{ 
    float:right; 
} 

を、私はdiv要素をこのように定義する:

<div class="myclass myclass-right"></div> 

divはmyclassからすべて継承しますが、浮動小数点数をfloatプロパティに上書きします:right?それは私が起こることが期待されるものです。また、クロスブラウザーの影響があるかどうかを知りたい(良いブラウザー対IE 7以上、f *** IE6)。

+1

はい、それはうまくいくでしょう、そして[ここ](http://jsfiddle.net/Pointy/Fr8Te/)は実証するjsfiddleです。 – Pointy

+0

重複しているhttp://stackoverflow.com/questions/3066356/multiple-css-classes-properties-overlapping-based-on-the-order-defined – deviousdodo

+0

それは欺瞞です。私は十分に見苦しくなかったと思う。あなたが幸運な競技者に彼らの有益な答えのために別の15人の担当者を与えることができるように、あなたがそれを閉じる前に私に5分を与えてください。 – iandisme

答えて

28

をオーバーライドする必要があります.myclassの後に定義されます。

編集の拡張:html要素に表示されるクラスの順序は無効です。セレクタの特異性とセレクタがスタイルシートに表示される順序が重要です。

+2

あなたの「編集する」をクリックすると詳しい説明が表示されます。スタイルシートの順序は少しばかげている... – Droj

14

!importantを使用すると、それを行う方法の1つです。また

.myclass-right{ 
    float:right !important; 
} 

あなたのセレクタと、より具体的であれば、それは限りセレクタが同じ特異性を有する(この場合には、彼らが行う)と.myclass-rightスタイルブロックがあるよう

に同様
div.myclass-right{ 
    float:right; 
} 
7

myclass-rightは、あなたのCSSファイルの中でと宣言されている限り動作します。

12

だけに加えて、別のオプションを捨てるたかった重要なだけでなく、スタイル定義の順序:!CSSが競合を属性場合

.myclass.myclass-right{float:right;} 
.myclass{float:left;} 
1

、CSSタグ:あなたが連鎖一緒に2と同様にすることができますこれはの後にとなり、他のスタイルシートが優先されます。

他の言い方をすると、あるクラスが他のクラスを上書きするようにしたい場合は、CSSファイルの最後に置いてください。

関連する問題