Я не верю, что это работает так, как вы намереваетесь, поскольку переключение классов .fa
эффективно переключает свойство content
элемента, а свойство content
не относится к числу тех, которые поддерживаются в анимации перехода в спецификации W3.: https://www.w3.org/TR/css-transitions-1/#animatable-css
Тем не менее, простой способ создать один и тот же эффект состоит в том, чтобы два значка перекрывали друг друга - по одному для каждого класса .fa
- и затем использовали чистый CSS для анимации желаемого поведения при наведении,Это может быть достигнуто с помощью следующего:
HTML:
<table class="table">
<tr>
<td><i class="fa fa-heart-o icon-default"></i><i class="fa fa-heart icon-hover"></i></td>
</tr>
</table>
CSS:
.table .fa {
transition: opacity 1s ease;
}
.icon-hover {
opacity: 0;
left: -16px;
position: relative;
}
.table:hover .icon-default {
opacity: 0;
}
.table:hover .icon-hover {
opacity: 1;
}
Сначала я установил переход для 1s ease
для вашего примера;мы установили его только на opacity
, так как это единственное изменение свойства.Затем я установил второй значок .fa
(.icon-hover
) на opacity:0
и поместил его позади основного (.icon-default
).
Наконец, для переключения режима применяется правило :hover
.непрозрачность двух значков при наведении на элемент .table
;в сочетании с ранее определенным свойством transition
эти два элемента появляются и исчезают.
CodePen здесь: https://codepen.io/anon/pen/VELLgj