Eu descobri uma solução que funcionou para mim ...
Se você tiver um item de lista (ou div) contendo apenas o link, digamos que seja para links sociais em sua página do Facebook, Twitter, etc. e você está usando uma imagem de sprite, você pode fazer isso:
<li id="facebook"><a href="facebook.com"></a></li>
Faça do fundo "li" a sua imagem de botão
#facebook {
width:30px;
height:30px;
background:url(images/social) no-repeat 0px 0px;
}
Em seguida, transforme a imagem de plano de fundo do link no estado de foco do botão. Adicione também o atributo opacity a isso e defina-o como 0.
#facebook a {
display:inline-block;
background:url(images/social) no-repeat 0px -30px;
opacity:0;
}
Agora tudo que você precisa é "opacidade" em "a: hover" e defina como 1.
#facebook a:hover {
opacity:1;
}
Adicione os atributos de transição de opacidade de cada navegador para "a" e "a: hover" para que o css final seja parecido com este:
#facebook {
width:30px;
height:30px;
background:url(images/social) no-repeat 0px 0px;
}
#facebook a {
display:inline-block;
background:url(images/social) no-repeat 0px -30px;
opacity:0;
-webkit-transition: opacity 200ms linear;
-moz-transition: opacity 200ms linear;
-o-transition: opacity 200ms linear;
-ms-transition: opacity 200ms linear;
transition: opacity 200ms linear;
}
#facebook a:hover {
opacity:1;
-webkit-transition: opacity 200ms linear;
-moz-transition: opacity 200ms linear;
-o-transition: opacity 200ms linear;
-ms-transition: opacity 200ms linear;
transition: opacity 200ms linear;
}
Se eu expliquei corretamente, isso deve permitir que você tenha um botão de imagem de fundo esmaecido, espero que ajude pelo menos!
background-image
não é uma propriedade animável ( w3.org/TR/css3-transitions/#animatable-properties ), portanto, sua solução não é compatível com o padrão.