CSS3 - 在精灵图像的“背景位置”之间淡入淡出

时间:2013-04-09 10:47:25

标签: css image sprite fade background-position

我想在精灵图像的“背景位置”之间淡出仅使用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>

谢谢。

4 个答案:

答案 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

上执行两件事
  1. background-position更改
  2. fadein效果
  3. 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; }
}

示例:http://jsfiddle.net/Y8W9S/

当然,现在你必须调整你想要实施的时间和效果。

希望它有助于或指出你正确的方向。

祝你好运。

答案 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);
}

我不能尝试这个,因为我来自手机。