Чистый способ CSS сделать это будет следующим:
#display {
background: url('/src/images/icons/display.png') no-repeat 0 0;
margin-right: 10px;
height: 49px;
width: 49px;
float: left;
}
#display:after {
content: "";
display: block;
background: url('/src/images/icons/display.png') no-repeat 0 -49px;
margin-right: 10px;
height: 49px;
width: 49px;
float: left;
opacity: 0;
-webkit-transition-property: opacity;
-moz-transition-property: opacity;
-o-transition-property: opacity;
-ms-transition-property: opacity;
transition-property: opacity;
-webkit-transition-duration: 0.3s;
-moz-transition-duration: 0.3s;
-o-transition-duration: 0.3s;
-ms-transition-duration: 0.3s;
transition-duration: 0.3s;
}
#display:after:hover {
opacity: 1;
}
Что этот код делает, это использует псевдоэлемент CSS3: after, чтобы в основном создать совершенно новое изображение сверху, а затем затемнить егоот прозрачного к непрозрачному при наведении.
Единственная проблема заключается в том, что Firefox в настоящее время является единственным браузером, который поддерживает псевдоэлементы fading: before и: after.
Если у вас есть дочерний элементвнутри (как div или элемент), вы можете сделать это вместо этого:
#display {
background: url('/src/images/icons/display.png') no-repeat 0 0;
margin-right: 10px;
height: 49px;
width: 49px;
float: left;
}
#display a {
display: block;
background: url('/src/images/icons/display.png') no-repeat 0 -49px;
height: 49px;
width: 49px;
float: left;
opacity: 0;
-webkit-transition-property: opacity;
-moz-transition-property: opacity;
-o-transition-property: opacity;
-ms-transition-property: opacity;
transition-property: opacity;
-webkit-transition-duration: 0.3s;
-moz-transition-duration: 0.3s;
-o-transition-duration: 0.3s;
-ms-transition-duration: 0.3s;
transition-duration: 0.3s;
}
#display:hover a {
opacity: 1;
}
Надеюсь, это поможет:)