:before
i :after
nie są wymagane do pracy z zastępowanymi elementami, a specyfikacje CSS nie określają, jak miałyby one działać, a koncepcja zastępowanego elementu jest nieco niejasna.
Specyfikacja CSS 2.1 jasno sugeruje , że mogą one działać dla zastąpionych elementów, po prostu mówiąc, że nie „w pełni” definiuje, jak. Wiąże się to z tym, że zastępowany element ma mieć własne renderowanie wizualne, które nie jest kontrolowane przez CSS, podczas gdy pseudoelementy powinny dodawać coś do zawartości elementu. W specyfikacji dodano, że zostanie to określone „bardziej szczegółowo” w przyszłej specyfikacji, ale do tej pory nie miało to miejsca.
Producenci przeglądarek postanowili po prostu uniknąć problemów, nie implementując w ogóle tych pseudoelementów dla niektórych elementów.
W ogóle nie jest jasne, co oznacza „zastąpiony element” i wydaje się, że znaczenie nieco się zmieniło. Często jest interpretowane jako oznaczające to samo co pusty element (element z EMPTY
zadeklarowaną zawartością, tj. Element, który nie może mieć żadnej treści), ale sam CSS 2.1 pokazuje przykładowy arkusz stylów z selektorem br:before
(chociaż przeglądarki zignorowały to, implementując br
własne sposób). Można argumentować, że coraz więcej elementów znalazło się w zakresie renderowania CSS, przynajmniej częściowo. Na przykład input
elementem (łącznie z czcionką, kolorami itp.) Można w większości sterować za pomocą CSS w nowoczesnych przeglądarkach.
Aktualne przeglądarek (Firefox, IE, Chrome) nie wydają się wspierać :after
i :before
pseudo-elementy do pustych elementów innych niż hr
. Dla hr
IE i Chrome umieścić wygenerowany zawartość wewnątrz pudełka, która graniczy jest realizacja hr
; zawartość sprawia, że pudełko jest wyższe. Firefox umieszcza zawartość obu (!) Pseudoelementów za poziomą regułą, jaką jest jego implementacja hr
. Ta odmiana ilustruje rodzaje problemów „interakcji”, o których mowa w CSS 2.1.
Często twierdzi się, że te pseudoelementy nie mogą być używane dla pustych elementów, ponieważ ich definicje HTML nie zezwalają na jakąkolwiek zawartość. To jest błąd kategorii. Reguły składniowe języka znaczników nie ograniczają tego, co możesz zrobić w CSS
Podsumowując, :after
i :before
obecnie nie można ich używać dla pustych elementów (z wyjątkiem marginalnie dla hr
), ale jest to głównie spowodowane implementacjami i może się zmienić w przyszłości.
<before></before>
w źródle coś takiego jak „ ”.