Jak pisać :hover
i :visited
warunek dla a:before
?
Próbuję, a:before:hover
ale to nie działa
źródło
Jak pisać :hover
i :visited
warunek dla a:before
?
Próbuję, a:before:hover
ale to nie działa
To zależy od tego, co naprawdę próbujesz zrobić.
Jeśli chcesz po prostu zastosować style do :before
pseudoelementu, gdy a
element pasuje do pseudo-klasy, musisz napisać a:hover:before
lub a:visited:before
zamiast tego. Zwróć uwagę, że pseudoelement występuje po pseudo-klasie (a właściwie na samym końcu całego selektora). Zauważ też, że są to dwie różne rzeczy; nazywanie ich oboma „pseudo-selektorami” wprowadzi cię w błąd, gdy napotkasz problemy ze składnią, takie jak ta.
Jeśli piszesz CSS3, możesz oznaczyć pseudoelement podwójnymi dwukropkami, aby rozróżnić to rozróżnienie. Stąd a:hover::before
i a:visited::before
. Ale jeśli tworzysz starsze przeglądarki, takie jak IE8 i starsze, możesz bez problemu używać pojedynczych dwukropków.
Ta szczególna kolejność pseudoklas i pseudoelementów jest określona w specyfikacji :
Jeden pseudoelement może być dołączony do ostatniej sekwencji prostych selektorów w selektorze.
Sekwencja prostych przełączników jest łańcuchem prostym selektory, które nie są oddzielone combinator. Zawsze zaczyna się od selektora typu lub selektora uniwersalnego. Żaden inny typ lub uniwersalny selektor nie jest dozwolony w sekwencji.
Selektor proste jest albo przełącznik rodzaju selektor uniwersalny selektor atrybutem klasy selektor selektor ID, lub pseudo klasy.
Pseudoklasa to prosty selektor. Jednak pseudoelement nie jest, chociaż przypomina prosty selektor.
Jednak w przypadku pseudoklasy działania użytkownika, takiej jak :hover
1 , jeśli ten efekt ma być zastosowany tylko wtedy, gdy użytkownik wchodzi w interakcję z samym pseudoelementem, ale nie z a
elementem, nie jest to możliwe inaczej niż poprzez pewne niejasne obejście zależne od układu . Jak sugeruje tekst, standardowe pseudoelementy CSS nie mogą obecnie mieć pseudoklas. W takim przypadku konieczne będzie zastosowanie :hover
do rzeczywistego elementu potomnego zamiast pseudoelementu.
1 Oczywiście nie dotyczy to pseudoklas link, takich :visited
jak w pytaniu, ponieważ pseudoelementy nie są linkami.
text-decoration
.Napisz
a:hover::before
zamiasta::before:hover
: przykład .źródło
:after
vs CSS3::after
developer.mozilla.org/en-US/docs/Web/CSS/::after (singiel:
ma lepsze wsparcie)Aby zmienić tekst łącza menu po najechaniu kursorem myszy. (Tekst w innym języku po najechaniu kursorem) tutaj jest
przykład jsfiddle
HTML:
css:
źródło
a:hover::before
ztext-decoration: underline
, co powoduje podkreślenie odebrać czerwony kolor tekstu zastępczego.Spróbuj użyć
.card-listing:hover::after
hover
iafter
używać::
go będzie działaćźródło
Odpowiedź BoltClock jest poprawna. Jedyne, co chcę dołączyć, to to, że jeśli chcesz tylko wybrać pseudo element, wstaw zakres.
Na przykład:
zamiast:
W ten sposób możesz po prostu powiedzieć
który podświetli tylko pseudo element, a nie cały element li
źródło
Możesz również ograniczyć swoje działanie do jednej klasy, używając prawego spiczastego nawiasu („>”), jak to zrobiłem w tym kodzie:
Uwaga: Hover: before switch działa tylko w klasie .test1
źródło