Как написать :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 (сингл:
имеет лучшую поддержку)Чтобы изменить текст ссылки меню при наведении курсора. (Разный язык текста при наведении) вот
пример jsfiddle
HTML:
CSS:
источник
a:hover::before
сtext-decoration: underline
, что приводит к тому , подчеркивание , чтобы забрать красный цвет текста замены.Попробуйте использовать
.card-listing:hover::after
hover
иafter
использовать::
его, будет работатьисточник
BoltClock ответ правильный. Единственное, что я хочу добавить, это то, что если вы хотите выбрать только псевдоэлемент, поместите его в span.
Например:
вместо того:
Таким образом, вы можете просто сказать,
который будет выделять только псевдоэлемент, а не весь элемент li
источник
Вы также можете ограничить свое действие только одним классом, используя правую остроконечную скобку (">"), как я сделал в этом коде:
Примечание. Переключатель hover: before работает только для класса .test1
источник