#css #hover #font-awesome #pseudo-class
#css #наведите #шрифт-потрясающий #псевдокласс
Вопрос:
Я добавил значки шрифтов в список, подобный этому:
a:before {
font-family: FontAwesome;
content: "f015";
.. etc..
}
При наведении курсора на родительский тег привязки я хочу, чтобы это:перед псевдо было повернуто. Я пробовал это, но это не работает:
a:hover:before {
-webkit-transform:rotate(360deg);
-moz-transform:rotate(360deg);
-o-transform:rotate(360deg);
}
Разве это не работает? Что я могу сделать, чтобы получить эффект поворота для элемента:before только при наведении курсора родительского элемента?
Комментарии:
1. Не могли бы вы создать контейнер в
a
теге, к которому были бы применены:before
стили, а затем выполнить:a:hover element:before
?2. @ilovecode Нет, я не мог в этом случае, так как я должен добавить
:before
элемент только через css. Ответ Николае Олариу работает для меня..
Ответ №1:
Попробуйте это:
a:before {
-webkit-transition: all 300ms 0s ease-in-out;
transition: all 300ms 0s ease-in-out;
content: "f015";
display: inline-block; //as @Rohit Azad suggested
font-family: FontAwesome;
// .. etc ..
}
a:hover:before {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
Взгляните на эту скрипку.
Комментарии:
1. Используется для отображения:встроенного блока; не блокируется в a:before
2. @Nicolae, Ранее я добавлял css-переход к
<a>
тегу, когда он не работал. Как только я добавил переход кa:before
элементу, поворот сработал. Большое вам спасибо за ваш ответ. 🙂3. @RohitAzad Поскольку
:before
и:after
являются элементами, по сути, псевдоэлементами, вы могли бы заставить их отображаться в виде блока или встроенного блока, как и любой другой элемент (тег). В этом случае adisplay: inline-block
, как вы предложили, было бы лучше, потому что это не приводит к падению тега a ниже его:before
. Итак, я редактирую свой ответ, чтобы обновить с помощьюinline-block
.4. @blackops_programmer Для того, чтобы CSS-переход сработал, вам всегда нужно указывать, какие свойства вы хотите анимировать в элементе в его первом (по умолчанию) состоянии, используя
transition: propToAnimate|all duration delay easing
(конечно, принимая во внимание префиксы браузера :)). Подробнее о CSS-переходах читайте здесь.5. Да.. У меня был
transition: all
родительский элемент привязки, и это не сработало. Как только переход был добавлен в:before
, он отлично сработал.
Ответ №2:
попробуйте этот css
a:hover:before[class*="icon-"] {
-webkit-transform:rotate(360deg);
-moz-transform:rotate(360deg);
-o-transform:rotate(360deg);
.rotate(360deg);
}
Ответ №3:
У меня это работает:http://jsfiddle.net/yZFR2 /
Попробуйте использовать transform
правило без префикса для webkit / mozila / opera. Протестировано в Firefox.