9

我正在尝试为此寻找替代方案:

"transition:background-image 1s whatever"

Firefox中,因为它仅适用于 webkit 浏览器。

我已经尝试了不透明度替代方案,但这对我来说不是一个选项,因为我在背景容器上有内容,如果使用不透明度,这些内容将与背景一起消失。

谢谢你。

4

4 回答 4

18

您可以使用 2 个伪元素来做到这一点

CSS

.test
{
    width: 400px;
    height: 150px;
    position: relative;
    border: 1px solid green;
}

.test:before, .test:after {
    content: "";
    position: absolute;
    top: 0px;
    right: 0px;
    bottom: 0px;
    left: 0px;
    opacity: 1;
}
.test:before {
    background-color: red;
    z-index: 1;
    transition: opacity 1s;
}

.test:after {
    background-color: green;
}

.test:hover:before {
    opacity: 0;
}

摆弄真实的图像

(悬停过渡)

为了能够看到 div 内容,伪元素需要在负 z-index 中:

摆弄更正的 z-index

看起来 IE 不会触发这个悬停

.test:hover:before {
    opacity: 0;
}

但会触发这个

.test:hover {
}
.test:hover:before {
    opacity: 0;
}

(看起来很傻)

IE10 的小提琴

于 2013-11-06T17:08:37.373 回答
0

利用悬停的最简单的解决方案

 

.self-pic {
    height: 350px;
    width: 350px;
    position: relative;
    border-radius: 1rem;
}

img {
    position: absolute;
    left: 0;
    transition: opacity, 1s;
}

img.front:hover {
    opacity: 0;
}

 
<div id="self-pic">
  <img class="back" src="https://source.unsplash.com/random/350*350" />
  <img class="front" src="https://source.unsplash.com/random/351*351" />
</div>

于 2020-08-31T15:32:02.050 回答
-1

它确实有效

你可以在这里看到它:http: //dabblet.com/gist/1931619

但显然 Firefox 还没有实现它。

于 2013-11-06T11:52:13.987 回答
-2
#id_of_element {
    -webkit-transition: all 1s ease-in-out;
    -moz-transition: all 1s ease-in-out;
    -o-transition: all 1s ease-in-out;
    transition: all 1s ease-in-out;
}

这不做吗?只需要将全部更改为背景图像。

于 2013-11-06T11:40:58.380 回答