J'ai une balise d'ancrage avec une icône géniale comme suit
<a href="#" class="lock"><i class="icon-unlock"></i></a>
Est-il possible de changer d'icône au survol d'une icône différente?
mon CSS
.lock:hover{color:red}
Mis à part l'icône qui devient rouge, je voudrais également changer l'icône comme suit
<i class="icon-lock"></i>
Est-ce possible sans l'aide de JavaScript? Ou ai-je besoin de Javascript/Jquery en survol pour cela?
Je vous remercie.
Vous pouvez basculer celui qui est affiché en survol:
HTML:<a href="#" class="lock">
<i class="icon-unlock"></i>
<i class="icon-lock"></i>
</a>
CSS:.lock:hover .icon-unlock,
.lock .icon-lock {
display: none;
}
.lock:hover .icon-lock {
display: inline;
}
Vous pouvez également modifier le content
du icon-unlock
classe:
.lock:hover .icon-unlock:before {
content: "\f023";
}
Si vous utilisez SCSS, vous pouvez simplement le faire. Beaucoup plus léger que toutes les solutions JS et plus léger sur le DOM.
.icon-unlock:hover {
@extend .icon-lock;
}
Dans mes modèles, j'utilise souvent FontAwesome et j'ai trouvé cette astuce CSS
* > .fa-hover-show,
*:hover > .fa-hover-hidden {
display: none;
}
*:hover > .fa-hover-show {
display: inline-block;
}
Ajoutez les deux icônes au HTML; l'icône par défaut doit avoir le fa-hover-hidden
classe alors que l'icône de survol devrait avoir fa-hover-show
.
<a href="#">
<i class="fa fa-lock fa-hover-hidden"></i>
<i class="fa fa-lock-open fa-hover-show"></i>
<span class="fa-hover-hidden">Locked</span>
<span class="fa-hover-show">Unlocked</span>
</a>
Étant donné que l'icône a un effet de survol, il est probable qu'elle se trouve à l'intérieur d'un bouton ou d'un lien, auquel cas, une solution appropriée serait également de réagir au changement sur: focus également.
* > .fa-hover-show,
*:hover > .fa-hover-hidden,
*:focus > .fa-hover-hidden {
display: none;
}
*:focus > .fa-hover-show,
*:hover > .fa-hover-show {
display: inline-block;
}
Manière simple d'ouvrir le fichier CSS de police génial et de changer le code d'icône au survol ...
par exemple ci-dessous est le code de l'icône de verrouillage
content: "\f023";
et voici ci-dessous le code pour l'icône de déverrouillage en CSS que vous pouvez mettre sous: survoler
.icon-unlock:before {
content: "\f09c";
}
En jquery ce serait juste:
$(document).ready(function () {
$('.icon-unlock').hover(function () {
$(this).addClass('icon-lock');
$(this).removeClass('icon-unlock');
}, function () {
$(this).addClass('icon-unlock');
$(this).removeClass('icon-lock');
});
});
Voici un fonctionnement jsfiddle de ceci.
Si vous utilisez jquery ui, vous pouvez utiliser .switchClass.
Un exemple de ceci serait:
$(document).ready(function() {
$(".icon-unlock").switchClass("icon-unlock", "icon-lock");
});
L'API sur .switchClass () se trouve ici
Vous pouvez utiliser du CSS pur:
ul#menu i.fa-envelope:hover:before {content: "\f2b6";}