:before
同じ要素に対して複数の疑似を持つことは可能ですか?
.circle:before {
content: "\25CF";
font-size: 19px;
}
.now:before{
content: "Now";
font-size: 19px;
color: black;
}
jQueryを使用して上記のスタイルを同じ要素に適用しようとしていますが、最新のスタイルのみが適用され、両方が適用されることはありません。
:before
同じ要素に対して複数の疑似を持つことは可能ですか?
.circle:before {
content: "\25CF";
font-size: 19px;
}
.now:before{
content: "Now";
font-size: 19px;
color: black;
}
jQueryを使用して上記のスタイルを同じ要素に適用しようとしていますが、最新のスタイルのみが適用され、両方が適用されることはありません。
CSS2.1 では、要素は、任意の種類の疑似要素を一度に最大 1 つしか持つことができません。(これは、要素が a:before
と:after
疑似要素の両方を持つことができることを意味します — それぞれの種類を複数持つことはできません。)
その結果、:before
同じ要素に一致する複数のルールがある場合、それらはすべてカスケードされ、通常の要素と同様に単一の:before
疑似要素に適用されます。あなたの例では、最終結果は次のようになります。
.circle.now:before {
content: "Now";
font-size: 19px;
color: black;
}
ご覧のcontent
とおり、優先順位が最も高い宣言 (前述のように、最後に来る宣言) のみが有効になります。残りの宣言は、他の CSS プロパティの場合と同様に破棄されます。
この動作は、CSS2.1 のセレクター セクションで説明されています。
疑似要素は、CSS の実際の要素と同じように動作しますが、以下で説明する例外があります。
これは、疑似要素を持つセレクターが通常の要素のセレクターと同じように機能することを意味します。また、カスケードが同じように機能する必要があることも意味します。奇妙なことに、CSS2.1 が唯一のリファレンスのようです。css3 -selectorsもcss3-cascadeもこれについてまったく言及しておらず、将来の仕様で明確になるかどうかはまだ不明です。
要素が同じ疑似要素を持つ複数のセレクターに一致する可能性があり、それらすべてを何らかの形で適用したい場合は、ブラウザーがそれらの中で何をすべきかを正確に指定できるように、組み合わせたセレクターで追加の CSS ルールを作成する必要があります。ケース。content
たとえば、シンボルとテキストのどちらを先に置くべきかが明確でないため、ここでプロパティを含む完全な例を提供することはできません。ただし、この結合されたルールに必要なセレクターは、.circle.now:before
またはの.now.circle:before
いずれかです。どちらのセレクターも同等であるため、選択するセレクターは個人的な好みであり、content
自分で定義する必要があるのはプロパティの値のみです。
それでも具体的な例が必要な場合は、この同様の質問に対する私の回答を参照してください。
従来の css3-content 仕様には、CSS2.1 カスケードと互換性のある表記法を使用して複数::before
の::after
疑似要素を挿入するセクションが含まれていますが、その特定のドキュメントは廃止されていることに注意してください — 2003 年以来更新されておらず、誰も持っていません過去 10 年間にその機能を実装しました。良いニュースは、放棄されたドキュメントがcss-content-3とcss-pseudo-4を装って積極的に書き直されていることです。悪いニュースは、複数の疑似要素機能がどちらの仕様にも見当たらないことです。おそらく、実装者の関心が欠如しているためです。