Is it possible to change between two fontawesome icons on hover?

后端 未结 6 1262
情书的邮戳
情书的邮戳 2020-12-05 00:52

I have an anchor tag with a font-awesome icon as follows


相关标签:
6条回答
  • 2020-12-05 01:10

    You could toggle which one's shown on hover:

    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;
    }
    

    Or, you could change the content of the icon-unlock class:

    .lock:hover .icon-unlock:before {
        content: "\f023";
    }
    
    0 讨论(0)
  • 2020-12-05 01:10

    You can use pure CSS:

    ul#menu i.fa-envelope:hover:before {content: "\f2b6";}
    
    0 讨论(0)
  • 2020-12-05 01:11

    Simple way open css file of font awesome and change icon code on hover...

    for example below is the code for lock icon

    content: "\f023";
    

    and here below is the code for unlock icon in css which you can put under :hover

    .icon-unlock:before {
      content: "\f09c";
    }
    
    0 讨论(0)
  • 2020-12-05 01:13

    In jquery it would just be:

    $(document).ready(function () {
            $('.icon-unlock').hover(function () {
                $(this).addClass('icon-lock');
                $(this).removeClass('icon-unlock'); 
            }, function () {
                $(this).addClass('icon-unlock');
                $(this).removeClass('icon-lock');
            });
    
    
        });
    

    Here is a working jsfiddle of this.

    If you are using jquery ui then you can use .switchClass.

    An example of this would be:

    $(document).ready(function() {
       $(".icon-unlock").switchClass("icon-unlock", "icon-lock");
    });
    

    The api on .switchClass() is located here

    0 讨论(0)
  • 2020-12-05 01:23

    If you are using SCSS, you could simply do this. Much lightweight than any of the JS solutions and lighter on the DOM.

    .icon-unlock:hover {
      @extend .icon-lock;
    }
    
    0 讨论(0)
  • 2020-12-05 01:24

    In my templates I often use FontAwesome and I came up with this CSS trick

    * > .fa-hover-show,
    *:hover > .fa-hover-hidden {
      display: none;
    }
    *:hover > .fa-hover-show {
      display: inline-block;
    }
    

    Add both icons to the HTML; the default icon should have the fa-hover-hidden class while the hover icon one should have 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>
    

    Given that the icon has a hover effect, it is likely that it is inside a button or link, in which case, a proper solution would be to also react to the change on :focus as well.

    * > .fa-hover-show,
    *:hover > .fa-hover-hidden,
    *:focus > .fa-hover-hidden {
      display: none;
    }
    *:focus > .fa-hover-show,
    *:hover > .fa-hover-show {
      display: inline-block;
    }
    
    0 讨论(0)
提交回复
热议问题