3

我想知道是否有人知道如何在两个背景图像之间进行过渡的聪明而新的方法?我知道那里有多个教程,只是其中大多数都过时了。

我想知道是否有一种聪明而现代的 CSS3 方式来做这样的事情。

我有一个简单的 logo.png 设置为 a 的背景div.logo(我希望将其设置为背景图像,而不是 via img src)。当我将鼠标悬停在它上面时,我希望平滑过渡到“logo-hover.png”,这是同一个文件,只是颜色不同。

现在有什么想法吗?

我的方法是这样的: - 我围绕div.logo相对位置创建一个外部容器。我在其中放置两个 div,绝对位置彼此重叠。div.hover 设置为display:none,如果我悬停它,我会使用 css3 过渡来动画它的不透明度。

这是这样做的唯一方法吗?我实际上很喜欢使用纯 css 方式,我不必向 dom 本身添加具有悬停状态的额外 div。

关于这件事有什么想法吗?

先感谢您。

4

3 回答 3

3

用这个

#home .stripes, #home .stripes:hover a {
    text-indent: -9999px;
    width: 116px;
    height: 128px;
    margin: 50px 0px 0px 56px;
    float:left;
    padding: 0;
    background:url('http://www.clipartpal.com/_thumbs/024/christmas/christmas_024_02_tns.png');
}
#home .stripes a {
    background:url('https://secure.10foldsolutions.com/ecommerce/images/9/products/29197.jpg');
    -webkit-transition: all .6s ease-in-out;
    -moz-transition: all .6s ease-in-out;
    -o-transition: all .6s ease-in-out;
    -ms-transition: all .6s ease-in-out;
    transition: all .6s ease-in-out;
}
#home .stripes a:hover, #home .stripes a:focus {
    background:url('https://secure.10foldsolutions.com/ecommerce/images/9/products/29197.jpg');
    opacity: 0;
}

于 2012-07-10T15:13:54.123 回答
2

实际上,我自己只是想出了一个解决方案。

我想要一种让图像看起来像精灵一样工作的方法,但要保持超级简单。

HTML:

<div class="facebookicon">
    <a href="#!"><img src="http://example.com/some.png"></a>
</div>

CSS:

.facebookicon img {
    background: #fff;
    transition:  background 400ms ease-out;
}

.facebookicon img:hover {
    background: #3CC;
    transition:  background 400ms ease-in;
}
/* you need to add various browser prefixes to transition */
/* stripped for brevity */

在这里你可以看到它:

http://jsfiddle.net/mattmagi/MpxBd/

于 2012-07-17T19:54:37.137 回答
1

我想这就是你想要的: DEMO。

基本上它使用你说的转换:

CSS标记:

.imagesTest {
    position:relative;
    height:200px;
    width:300px;
}
.imagesTest img {
    position:absolute;
    -webkit-transition: opacity 1s ease-in-out;
    -moz-transition: opacity 1s ease-in-out;
    -o-transition: opacity 1s ease-in-out;
    transition: opacity 1s ease-in-out;
}

.imagesTest img.top:hover {
    opacity:0;
}​

HTML标记:

<div class="imagesTest">
    <img class="bottom" src="some/image" />
    <img class="transition" src="some/image" />
</div>​

有关更多信息,请在此处查看更多示例

于 2012-07-10T15:03:11.613 回答