我想在精灵图像的“背景位置”之间淡出仅使用CSS 。我找到了很多教程,但我没有找到像这样简单的东西:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>CSS3 - Fade between 'background-position' of a sprite image</title>
<style type="text/css">
div{
width: 120px;
height: 60px;
background-image: url('sprite.jpg');
background-repeat: no-repeat;
background-position: 0 0;
}
div:hover{
background-position: 0 -60px;
}
</style>
</head>
<body>
<div></div>
</html>
谢谢。
答案 0 :(得分:3)
我找到了答案,无论如何,谢谢。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>CSS3 - Fade between 'background-position' of a sprite image</title>
<style type="text/css">
#button{
float: left;
background-image: url('sprite.jpg');
background-position: 0 -60px;
background-repeat: no-repeat;
width: 120px;
height: 60px;
}
#button a{
background-image: url('sprite.jpg');
background-position: 0 0;
background-repeat: no-repeat;
width: 120px;
height: 60px;
display: block;
text-indent: -9999px;
transition: opacity 0.3s ease-in-out;
-moz-transition: opacity 0.3s ease-in-out;
-webkit-transition: opacity 0.3s ease-in-out;
-o-transition: opacity 0.3s ease-in-out;
}
#button a:hover,
#button a:focus{
opacity: 0;
}
</style>
</head>
<body>
<div id="button"><a href="#"></a></div>
</html>
答案 1 :(得分:2)
所以基本上,你需要在:hover
background-position
更改fadein
效果CSS3过渡在这种情况下不会有用。 您可以使用CSS3动画属性。
动画属性接受动画和持续时间的name
。可以用逗号分隔多个动画名称。
您需要定义这些动画名称。它们可以是您选择的任何字符串,但您需要定义它们。 所以考虑一下这个css:
div:hover{
animation: fadein 10s, bp 0.5s;
-moz-animation: fadein 10s, bp 0.5s; /* Firefox */
-webkit-animation: fadein 10s, bp 0.5s; /* Safari and Chrome */
-o-animation: fadein 10s, bp 0.5s;
background-position:0 0;
}
@-webkit-keyframes fadein { /* Safari and Chrome */
from {
opacity:0;
}
to {
opacity:1;
}
}
@-webkit-keyframes bp { /* Safari and Chrome */
from {
background-position:-200px 0;
}
to {
background-position:0 0;
}
}
请参阅此fiddle,了解完整的浏览器支持的动画
注意:它无法在IE&lt; 9中使用!它可能在IE9中(不确定)。
答案 2 :(得分:2)
您可以将CSS3 Animation
与@keyframes
div:hover{
animation: logo 2s 0 linear;
}
@keyframes logo{
0% { opacity: 1; }
5% { opacity: 0; }
50% { background-position: 0 -60px; opacity: 0; }
100% { background-position: 0 -60px; opacity: 1; }
}
当然,现在你必须调整你想要实施的时间和效果。
希望它有助于或指出你正确的方向。
祝你好运。答案 3 :(得分:0)
像这样使用:
div{
width: 120px;
height: 60px;
background-image: url('sprite.jpg');
background-repeat: no-repeat;
background-position: 0 0;
transition: background-position 1s ease;
}
不要忘记可选的供应商前缀
修改强>
我注意到你需要褪色。你试着像这样的类似解决方案:
div{
background: url(foo.jpg) no-repeat 0 0 transparent;
transition: background: 1s ease;
}
div:hover{
background: rgba(0, 0, 0, 1);
}
我不能尝试这个,因为我来自手机。