Jak pisać :hover
i :visited
warunek dla a:before
?
Próbuję, a:before:hover
ale to nie działa
Jak pisać :hover
i :visited
warunek dla a:before
?
Próbuję, a:before:hover
ale to nie działa
Odpowiedzi:
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
zamiast a::before:hover
: przykład .
: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
HTML:
<a align="center" href="#"><span>kannada</span></a>
css:
span {
font-size:12px;
}
a {
color:green;
}
a:hover span {
display:none;
}
a:hover:before {
color:red;
font-size:24px;
content:"ಕನ್ನಡ";
}
a:hover::before
z text-decoration: underline
, co powoduje podkreślenie odebrać czerwony kolor tekstu zastępczego.
Spróbuj użyć .card-listing:hover::after
hover
i after
używać ::
go będzie działać
Odpowiedź BoltClock jest poprawna. Jedyne, co chcę dołączyć, to to, że jeśli chcesz tylko wybrać pseudo element, wstaw zakres.
Na przykład:
<li><span data-icon='u'></span> List Element </li>
zamiast:
<li> data-icon='u' List Element</li>
W ten sposób możesz po prostu powiedzieć
ul [data-icon]:hover::before {color: #f7f7f7;}
który podświetli tylko pseudo element, a nie cały element li
Możesz również ograniczyć swoje działanie do jednej klasy, używając prawego spiczastego nawiasu („>”), jak to zrobiłem w tym kodzie:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
span {
font-size:12px;
}
a {
color:green;
}
.test1>a:hover span {
display:none;
}
.test1>a:hover:before {
color:red;
content:"Apple";
}
</style>
</head>
<body>
<div class="test1">
<a href="#"><span>Google</span></a>
</div>
<div class="test2">
<a href="#"><span>Apple</span></a>
</div>
</body>
</html>
Uwaga: Hover: before switch działa tylko w klasie .test1