Як написати :hover
та :visited
умовити a:before
?
Я намагаюся, a:before:hover
але це не працює
Як написати :hover
та :visited
умовити a:before
?
Я намагаюся, a:before:hover
але це не працює
Відповіді:
Це залежить від того, що ви насправді намагаєтесь зробити.
Якщо ви просто хочете застосувати стилі до :before
псевдоелементу, коли a
елемент відповідає псевдокласу, вам потрібно написати a:hover:before
або a:visited:before
замість цього. Зауважте, що псевдоелемент надходить після псевдокласу (і насправді, в самому кінці всього селектора). Зауважте також, що це дві різні речі; називаючи їх обома "псевдоселекторами", вас бентежить, коли ви зіткнетесь із проблемами синтаксису, як ця.
Якщо ви пишете CSS3, ви можете позначити псевдоелемент з подвійними двокрапками, щоб зробити це розрізнення чіткішим. Отже, a:hover::before
і a:visited::before
. Але якщо ви розробляєте для застарілих веб-переглядачів, таких як IE8 і старіші, то ви можете піти з використання однократних кольорів просто чудово.
Цей специфічний порядок псевдокласів та псевдоелементів зазначено у специфікації :
Один псевдоелемент може бути доданий до останньої послідовності простих селекторів у селекторі.
Послідовність простих селектор являє собою ланцюжок простих селектор, що не розділених комбінатора. Це завжди починається з селектора типу або універсального селектора. Жоден інший селектор типу або універсальний селектор не допускається в послідовності.
Селектор простого або селектор типу, універсальний селектор, селектор атрибуту, селектор класу, селектор ідентифікатора, або псевдо-клас.
Псевдоклас - простий селектор. Псевдоелемента, однак, немає, хоча він нагадує простий селектор.
Однак для псевдокласів, що виконуються користувачем, таких як :hover
1 , якщо вам потрібно, щоб цей ефект застосовувався лише тоді, коли користувач взаємодіє із самим псевдоелементом, але не з a
елементом, то це неможливо, крім іншого через нечітке вирішення залежно від компонування. . Як випливає з тексту, стандартні псевдоелементи CSS наразі не можуть мати псевдокласи. У цьому випадку вам потрібно буде застосувати :hover
до фактичного дочірнього елемента замість псевдоелемента.
1 Звичайно, це не стосується псевдокласів, таких як :visited
питання, оскільки псевдоелементи не є посиланнями.
text-decoration
.
Напишіть a:hover::before
замість a::before:hover
: приклад .
:after
проти CSS3 ::after
developer.mozilla.org/en-US/docs/Web/CSS/::after (сингл :
має кращу підтримку)
Щоб змінити текст посилання на меню при наведенні курсору миші. (Різний текст мовою на наведення курсора) ось
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
з text-decoration: underline
, що призводить до того , підкреслення , щоб забрати червоний колір тексту заміни.
Спробуйте використовувати .card-listing:hover::after
hover
і after
використовувати ::
його буде працювати
Відповідь BoltClock правильна. Єдине, що я хочу додати, це те, що якщо ви хочете вибрати лише псевдоелемент, покладіть на проміжок.
Наприклад:
<li><span data-icon='u'></span> List Element </li>
замість:
<li> data-icon='u' List Element</li>
Таким чином ви можете просто сказати
ul [data-icon]:hover::before {color: #f7f7f7;}
який підкреслить лише псевдоелемент, а не весь елемент li
Ви також можете обмежити свою дію лише одним класом, скориставшись правою загостреною дужкою (">"), як я це зробив у цьому коді:
<!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>
Примітка: Наведення курсора: перед перемиканням працює лише на клас .test1