Hello out there!
Aha, im Firefox nicht. Warum auch immer.
Wegen der Spec? ;-)
Die Spezifikation sagt eigentlich auch das, was ich darunter verstehe:
As their names indicate, the :before and :after pseudo-elements specify the location of content before and after an element's document tree content.
“before and after an element's document tree _content_”; nicht “before and after an element in the document tree”.
Also, wie ich das verstehe, nicht
<img src="foo" alt="bar" title="baz"/><::after>baz</::after>
sondern
<img src="foo" alt="bar" title="baz"><::after>baz</::after></img>
Aber besonders glücklich ist die Formulierung in der Spec wohl nicht gewählt.
Wo der generierte Inhalt eingefügt werden sollte (zumindest wie Firefox solchen einfügt), war doch auch die Auflösung von MudGuards Problem „Firefox only: :last-child::after { clear:left; } geht nicht?“, besonders durch dieses Posting von Axel Richter, „da [fiel] es [MudGuard] wie Schuppen aus den Haaren ...“ Du erinnerst dich? Warst doch am Thread beteiligt.
Und schließlich zieht man sich gleich ganz aus der Affäre:
Note. This specification does not fully define the interaction of :before and :after with replaced elements (such as IMG in HTML). This will be defined in more detail in a future specification.
Hm, diese Passage gibt’s nicht in CSS 2.0; dafür aber:
„Die nächste Regel fügt den Text des HTML-Attributs „alt“ vor dem Bild ein. Wenn das Bild nicht angezeigt wird, sieht der Leser statt dessen den „alt“-Text.
IMG:before { content: attr(alt) }“ [CSS2 §12.2]
Die Regel beschreibt also das übliche Verhalten der Browser. Der Inhalt des Pseudoelements wird nur angezeigt, wenn das Bild nicht angezeigt wird.
Gleiches sollte dann aber natürlich auch bei img:after {content: attr(title)}
gelten.
Es ist also den Browserherstellern überlassen, wie sie die Pseudoklassen bei replaced-inline-Elementen umsetzen. Weder Firefox noch Opera machen hier also etwas falsch.
Nach CSS 2.0 irrt Opera IMHO, Firefox macht’s richtig. Und CSS 2.1 ist ja eine Anpassung der Spec an die Realität. Ob das so klug ist?
See ya up the road,
Gunnar
“Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)