SVGファイルでCSSを操作するとき、もともと私はこの問題に気づいていましたが、レンダリングエラーだと思っていましたが、CSSアトリビュートセレクタが通常のCSSクラスセレクタよりも優先されます
次のコードを取る:正常クラスセレクタを使用して、予想されるようにそれ以降のファイルでは、blue
、こうして得られた色として再定義されるが、color
の値は、最初であり、この場合に
.example {color:green}
.example {color:blue}
をクラス内の要素の青は青です。値が通常のCSSクラスセレクタを使用して再定義されたときに、今、最初に属性セレクタを使用してexample
でのdivのための色の値を定義し、この場合、緑からの変更を
div[class='example'] {color:green}
.example {color:blue}
:
今、この例を取ります青はdiv内では無視され、属性セレクタによって設定された値が優先されます。ただし、クラス全体の青色値が後でファイルで再宣言されます。
CSS class selectorsのMozillaのドキュメントによれば、通常のセレクタと属性セレクタは「同等」と言われていますが、この状況ではそうではありません。これの原因は何ですか?
あなたの最初のCSSルールは* 2 *条件(div **と**特定の属性)を探していますが、2番目のCSSルールは* one *条件(クラス)を探しています。それ自身の属性セレクタ*は同等ですが、最初の例には2つの条件が含まれています。より具体的で優先順位が高いためです。 – Santi
合意。 @サンティは正しいです。単純な属性セレクタを使用するには、 '[class = 'example']' 'div'部分を削除するためのスタイルルールを変更する必要があります。 –