Nie można użyć kombinatora, aby celować w pseudoelement względem elementów innych niż jego element generujący.
To dlatego, że są to pseudoelementy, a nie rzeczywiste elementy, a kombinatory działają tylko poprzez ustanowienie relacji między rzeczywistymi elementami. Z drugiej strony pseudoelement można zastosować tylko do podmiotu selektora (prawego selektora złożonego), a dzieje się to tylko po dopasowaniu przetwarzanym na elementach rzeczywistych. Innymi słowy, dopasowywanie odbywa się najpierw tak, jakby nie było pseudoelementu, a następnie pseudoelement, jeśli jest wskazany w selektorze, jest stosowany do każdego dopasowania.
W kodzie następujący selektor:
a[href^="http"] img ~ :after
faktycznie nie szukać :after
pseudo-element, który przychodzi po img
w a
, choć wydaje się, że sposób, jak oba są renderowane jako dzieci elementu a
.
Może być zapisane na następujące:
a[href^="http"] img ~ *:after
Wskazówki selektor *
, który jest domyślnie. Podobnie do tego, jak można ominąć *
przed innymi prostymi selektorami, aby był dorozumiany, pomijanie *
z pseudoelementu również sprawia, że domyślnie jest tam. Szczegółowe informacje można znaleźć w spec.
Teraz, chociaż wydaje się, *:after
nadal powinien dopasować a:after
(od a
pasowałby *
), to nadal nie działa w ten sposób. Jeśli usuniesz ten pseudo-element :after
z selektora:
a[href^="http"] img ~ *
Zauważysz, że znaczenie zmian selektora całości:
wybrać dowolny element
który pojawia się jako poniższej rodzeństwa jest to potomek a
(którego href
zaczyna się od "http").
Od img
jest ostatnim dzieckiem elementu a
w HTML nie istnieją następujące rodzeństwo do meczu, więc nie ma :after
pseudo-elementy mogą być generowane.
W przypadku pseudo-elementu :before
lub :after
, można by pomyśleć dopasowanie elementu generującego względem pseudo-element, aby „rodzeństwo” pseudo-element, ale jak OP słusznie wskazał, there is no parent selector, więc także nie ma szczęścia.
Składnia CSS2: ': after', składnia CSS3:' :: after'. –
Składnia pseudoelementów jest nieistotna. Albo zadziała. – BoltClock
oh jak ja też chciałem tego .. – nikoloza