Nasıl yazılır :hover
ve :visited
koşullandırılıra:before
?
Deniyorum a:before:hover
ama çalışmıyor
Nasıl yazılır :hover
ve :visited
koşullandırılıra:before
?
Deniyorum a:before:hover
ama çalışmıyor
Yanıtlar:
Bu aslında ne yapmaya çalıştığınıza bağlıdır.
Sadece bir stiller uygulamak isterseniz :before
zaman sözde elemanı a
eleman bir sözde sınıfı eşleşir sen yazma gereken a:hover:before
veya a:visited:before
yerine. Sözde elemanın sonra geldiğine dikkat edin sözde sınıfı (ve aslında, tüm seçicinin en sonunda). Ayrıca iki farklı şey olduğuna dikkat edin; Bu tür sözdizimi sorunlarıyla karşılaştığınızda ikisine de "sözde seçici" demeniz sizi şaşırtacaktır.
CSS3 yazıyorsanız, bu ayrımı daha net hale getirmek için çift sütunlu bir sözde öğeyi gösterebilirsiniz. Dolayısıyla a:hover::before
ve a:visited::before
. Ancak IE8 ve daha eski tarayıcılar için eski tarayıcılar için geliştiriyorsanız, tek sütunları kullanmaktan kurtulabilirsiniz.
Sözde sınıflar ve sözde elemanları bu spesifik sırası belirtilmektedir spec :
Bir sözde eleman, bir seçicideki son basit seçicilerin dizisine eklenebilir.
Bir Basit seçiciler dizisi bir combinator ayrılmış değildir, basit seçiciler zinciridir. Her zaman bir tip seçici veya evrensel bir seçici ile başlar. Sekansta başka bir tip seçiciye veya evrensel seçiciye izin verilmez.
Bir basit seçici ya tür seçici, genel seçici, özelliği, seçici, sınıf seçici, kimlik seçici ya da psödo-sınıftır.
Yalancı sınıf basit bir seçicidir. Bununla birlikte, sahte bir öğe, basit bir seçiciye benzese bile değildir.
Ancak, :hover
1 gibi kullanıcı eylemi sözde sınıfları için , bu efektin yalnızca kullanıcı sözde öğenin kendisi ile etkileşime girdiği ancak öğeyle etkileşime girmesi durumunda uygulanması gerekiyorsa a
, bu, mizanpaj düzenine bağımlı bazı geçici çözümlerden başka mümkün değildir. . Metinde ima edildiği gibi, standart CSS sözde elemanlarının şu anda sözde sınıfları olamaz. Bu durumda, :hover
sözde öğe yerine gerçek bir alt öğeye başvurmanız gerekir .
1 Elbette bu, :visited
sözde elemanlar bağlantı olmadığı için söz konusu gibi sözde sınıfları bağlamak için geçerli değildir.
text-decoration
.
a:hover::before
Bunun yerine yazın a::before:hover
: örnek .
:after
vs CSS3 hakkında daha fazla bilgi ::after
developer.mozilla.org/en-US/docs/Web/CSS/::after (single :
daha iyi destek var)
Fareyle üzerine gelindiğinde menü bağlantısının metnini değiştirmek için. (Fareyle üzerine gelindiğinde farklı dil metni)
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
ile text-decoration: underline
yedek metnin kırmızı rengi almaya altı çizili neden olan.
Kullanmaya çalışın .card-listing:hover::after
hover
ve çalışınafter
::
BoltClock'un cevabı doğru. Eklemek istediğim tek şey, yalnızca sözde öğeyi seçmek istiyorsanız, bir yayılma alanı koymaktır.
Örneğin:
<li><span data-icon='u'></span> List Element </li>
onun yerine:
<li> data-icon='u' List Element</li>
Bu şekilde basitçe söyleyebilirsin
ul [data-icon]:hover::before {color: #f7f7f7;}
li öğesinin tamamını değil, yalnızca sözde öğeyi vurgulayacak
Ayrıca, bu kodda yaptığım gibi, sağ sivri braketi (">") kullanarak eyleminizi yalnızca bir sınıfa kısıtlayabilirsiniz:
<!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>
Not: Fareyle üzerine gelindiğinde: anahtarı yalnızca .test1 sınıfında çalışır