:before
および置き換えられた要素に対して機能する必要:after
はありません。また、CSS 仕様ではそれらがどのように機能するかを指定していません。また、置き換えられた要素の概念はややあいまいです。
CSS 2.1 仕様は、置換された要素に対して機能することを明確に示唆していますが、それがどのように「完全に定義されている」わけではないと述べているだけです。これは、置き換えられた要素が、CSS によって制御されない独自の視覚的レンダリングを持つことが期待されるという問題に関連していますが、疑似要素は要素のコンテンツに何かを追加する必要があります。仕様は、これが将来の仕様で「より詳細に」定義されると付け加えていますが、これはまだ行われていません.
ブラウザー ベンダーは、一部の要素に対してこれらの疑似要素をまったく実装しないことで、問題を回避することを決定しました。
「置換された要素」が何を意味するのかはまったく明確ではなく、意味が少し変わったようです。EMPTY
多くの場合、空要素 (宣言されたコンテンツを持つ要素、つまり、コンテンツを持つことができない要素)と同じ意味であると解釈されますが、CSS 2.1 自体はセレクターを含むスタイル シートのサンプルbr:before
を示しています (ただし、ブラウザーはこれを無視しbr
、独自の要素を実装しています)。仕方)。少なくとも部分的には、ますます多くの要素が CSS レンダリングの範囲に移行したと言えます。たとえば、input
要素 (フォント、色などを含む) は、最新のブラウザーの CSS で大部分が制御可能です。
現在のブラウザー (Firefox、IE、Chrome) は、以外の空の要素に対して:after
および疑似要素をサポートしていないようです。の場合、IE および Chrome は、生成されたコンテンツを;の実装である枠付きボックス内に配置します。中身が箱の背を高くします。Firefox は、両方の (!) 疑似要素のコンテンツを、 の実装である水平ルールの後に配置します。このバリエーションは、CSS 2.1 で言及されている「相互作用」の問題の種類を示しています。:before
hr
hr
hr
hr
これらの疑似要素は、HTML 定義でコンテンツが許可されていないため、空の要素には使用できないとよく言われます。これはカテゴリーエラーです。マークアップ言語の構文規則は、CSS でできることを制限しません
結論として、:after
and:before
は現在空の要素には使用できません (わずかに を除くhr
) が、これは主に実装によるものであり、将来変更される可能性があります。