Salut,
ce n'est pas très compliqué en fait, quand tu analyses le code source, tu remarques qu'il utilise un sprite pour chaque image : http://www.stores-destock.com/modules/blocksocial_mod/img/fb.png, et qu'il modifie le background position.
Ce qui me gène dans son code est qu'il utilise jQuery pour réaliser cet effet alors que c'est totalement possible avec simplement du CSS. Il te suffit de jouer avec la propriété transition.
// HTML
<ul>
<li>
<a href="#">facebook</a>
</li>
<li>
<a href="#">facebook</a>
</li>
</ul>
//CSS
li {
float: left;
}
li a {
background: url('http://www.stores-destock.com/modules/blocksocial_mod/img/fb.png') 0 0 no-repeat;
display:block;
height: 32px;
text-indent: -9999em;
width: 32px;
transition: background-position .3s ease-in-out; // à dupliquer pour ajouter les vendor prefixes
}
li a:hover {
background-position: 0 -32px;
}
N'oublie pas, F12 est ton ami !