Firefox中背景图像的过渡?

Posted

技术标签:

【中文标题】Firefox中背景图像的过渡?【英文标题】:transition for background-image in firefox? 【发布时间】:2013-11-17 11:51:44 【问题描述】:

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

"transition:background-image 1s whatever"

firefox 中,因为它只适用于 webkit 浏览器。

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

谢谢。

【问题讨论】:

CSS3 Background image Transition 的可能重复项 不,这不是因为那里提供的解决方案存在不透明性,正如我在帖子中所说的那样,这对我不起作用。 检查这个答案:***.com/a/16619705/1873387 看起来firefox还没有实现它。 我认识那个人,所以我要找一个替代品。 【参考方案1】:

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

 

.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>

【讨论】:

【参考方案2】:

你可以使用 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;

fiddle with real images

(悬停过渡)

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

fiddle with corrected z-index

看起来 IE 不会触发此悬停

.test:hover:before 
    opacity: 0;

但会触发这个

.test:hover 

.test:hover:before 
    opacity: 0;

(看起来很傻)

fiddle for IE10

【讨论】:

嗨,看起来不错,但我不能在 div 中放置内容? 你说得对,我忘记检查了。我添加了另一个示例,我将 z-index 设置为负值并纠正了该问题。 哇,完美运行!谢谢你。现在就像奖金一样。它适用于最新版本的 IE 吗?我有 9,它在这里不起作用。并不是说我很在意,因为 IE 很烂。 尝试 10 分钟后,让它与 IE10 一起工作。希望它也适用于 9 .. 哇,Explorer 真是一坨屎。我不敢相信有必要想出很多奇怪的代码才能让事情在那里工作。似乎它不适用于 explorer 9。但没关系,我很久以前就放弃了 explorer。非常感谢您的帮助。【参考方案3】:
#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;

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

【讨论】:

不,它没有。 Firefox 不支持背景图像的过渡。这就是为什么我要求另一种选择。 据我所知,似乎还没有解决方法。 2021年底了,FF还是还不支持! ?【参考方案4】:

确实有效

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

但显然 Firefox 还没有实现它。

【讨论】:

谢谢,但这就是我的问题所在。由于 ti 在 Firefox 上不起作用,我正在寻找替代品。 @CainNuke 好的,抱歉。我想你唯一能做的就是有一个空的 div 只包含背景图像和顶部的另一个 div 包含内容......我想不出另一种选择。 是的,但如果你这样做并应用不透明度过渡,那么内容也会消失。 不,你只将过渡应用到包含背景图片的 div,没有别的 你是怎么做到的?当我将 div 中的所有内容都消失时,不仅仅是背景。

以上是关于Firefox中背景图像的过渡?的主要内容,如果未能解决你的问题,请参考以下文章

悬停时div的背景图像转换不起作用[重复]

CSS 动画过渡不适用于 Firefox

背景颜色和背景图像 CSS3 之间的过渡

怎么设计css网页背景颜色过渡?

背景图像渐变上的css过渡

鼠标悬停在背景图像上的过渡