透明背景div的背景颜色过渡效果?

时间:2013-10-12 19:55:55

标签: css css3 html background css-transitions

我有一个显示返回顶部箭头图像(精灵)的div。我正在使用css更改背景位置以实现颜色更改。

如何在不使用背景位置转换的情况下转换箭头的颜色?我正在寻找背景颜色过渡效果,但我不能使用它,因为我希望div的背景是透明的。希望我的问题不会太混乱。

http://jsfiddle.net/9stkQ/

的CSS:

.top{
    background:url(../images/top.png) -10px -10px;
    background-repeat:no-repeat;
    width:20px;
    height:20px;
    display:block;
    margin:0 auto;
    cursor:pointer;
}

.top:hover{
    background:url(../images/top.png) -10px 30px;
}

2 个答案:

答案 0 :(得分:1)

您可以通过以下方式在同一图像的2个精灵之间进行转换:

.top{
    background:url(http://placekitten.com/200/300) 0px 0px;
    background-repeat:no-repeat;
    width:100px;
    height:100px;
    display:block;
    margin:0 auto;
    cursor:pointer;
    position: relative
}

.top:after {
    content: '';
    position: absolute;
    top: 0px;
    right: 0px;
    bottom: 0px;
    left: 0px;
    background:url(http://placekitten.com/200/300) 100px 0px;
    opacity: 0;
    -webkit-transition: opacity 1s;
    transition: opacity 2s;
}

.top:hover:after {
    opacity: 1;
}

由于您在伪元素中显示第二个精灵,因此转换不会“移动”

fiddle

答案 1 :(得分:0)

另一种方法是不使用图像而是使用伪元素。

JSFiddle Example

.top {
    position:relative;
    width:0;
}

.top:before {
    position:absolute;
    border:20px solid transparent;
    border-bottom:20px solid red;
    content:"";
}

.top:hover:before {
    border-bottom:20px solid green;
}