当前位置: 首页 > 面试题库 >

关键帧中的背景图像在Firefox或Internet Explorer中不显示

梅安平
2023-03-14
问题内容

我的网站上有几个动画,我刚刚意识到它们甚至都没有出现在Firefox或Internet Explorer中。我background- image在关键帧内。我这样做是因为我在动画中具有不同百分比的不同图像。

为什么background-image在Firefox和Internet Explorer的关键帧中不显示内容,有没有办法使它起作用?


问题答案:

根据规范,background-image不是可动画或可转换的属性。但这似乎并没有说明在将其用作过渡或动画的一部分时应如何处理或如何处理。因此,每个浏览器似乎对其处理方式有所不同。Chrome(Webkit)显示背景图片时,Firefox和IE似乎无能为力。

oli.jp上的文章中的以下引号提供了一些有趣的信息:

尽管在撰写本文时CSS背景和边界模块第3级编辑草稿对背景图像说“可动画处理:否”,但Chrome 19
Canary中出现了对CSS中的交叉渐变图像的支持。在获得广泛支持之前,可以通过图像精灵和背景位置或不透明性来伪造这一点。要为渐变设置动画,它们必须为同一类型。

从表面上看,Firefox和IE似乎可以正确地处理它,而Chrome却不能。但是,这并不是那么简单。在处理背景图像而不是动画时,Firefox似乎自相矛盾。虽然转变background- image,它显示了紧接第二图像(hover第一div,而动画的同时,第二图像不会被显示在所有的片段)(hover第二div的片段)。

因此,结论是 最好不要 background-image 在关键帧内 设置
。相反,我们必须使用background-positionopacity喜欢指定的@oli.jp。

div {

  background-image: url(https://placehold.it/100x100);

  height: 100px;

  width: 100px;

  margin: 10px;

  border: 1px solid;

}

div:nth-of-type(1) {

  transition: background-image 1s ease;

}

div:nth-of-type(1):hover {

  background-image: url(https://placehold.it/100/123456/ffffff);

}

div:nth-of-type(2):hover {

  animation: show-img 1s ease forwards;

}

@keyframes show-img {

  to {

    background-image: url(https://placehold.it/100/123456/ffffff);

  }

}


<div></div>

<div></div>

如果您有多个图像应在关键帧中以不同的百分比显示,那么最好在开始时将所有这些图像添加到元素上,并对它们的位置进行动画处理,如下面的代码片段所示。这
在Firefox,Chrome和IE中以相同的方式工作

div {

  background-image: url(https://placehold.it/100x100), url(https://placehold.it/100/123456/ffffff);

  background-size: 100% 100%;

  background-repeat: no-repeat;

  background-position: 0px 0px, 100px 0px;

  height: 100px;

  width: 100px;

  margin: 10px;

  border: 1px solid;

}

div:hover {

  animation: show-img 1s steps(1) forwards;

}

@keyframes show-img {

  to {

    background-position: -100px 0px, 0px 0px;

  }

}


<div></div>

或者,如下面的代码片段所示。基本上,每个图像的大小与容器background-size设置的大小相同,100% 100%但由于给定的时间与容器的大小相同,因此在任何给定的时间仅显示一个图像。之所以显示第一个图像之间0%50%是因为它在0px,0px(左上角),而第二个图像在100px,0px(右边界外)。在50.1%,第一张图片在-100px,0px(位于左边框外),第二张图片在0px,0px,因此它是可见的。

div {

  background-image: url(https://picsum.photos/id/0/367/267), url(https://picsum.photos/id/1/367/267);

  background-size: 100% 100%; /* each image will be 100px x 100px */

  background-repeat: no-repeat;

  background-position: 0px 0px, 100px 0px;

  height: 100px;

  width: 100px;

  margin: 10px;

  border: 1px solid;

  animation: show-img 5s ease forwards;

}

@keyframes show-img {

  0%, 50%{

    background-position: 0px 0px, 100px 0px; /* initially 1st image will be shown as it it as 0px 0px */

  }

  50.1%, 100% {

    background-position: -100px 0px, 0px 0px; /* at 50.1% 2nd image will be shown as it it as 0px 0px */

  }

}


<div></div>


 类似资料:
  • 问题内容: 我正在尝试为此寻找替代方案: 在 firefox中, 因为它仅适用于webkit浏览器。 我已经尝试过不透明度选项,但是那对我来说不是一个选择,因为我在背景容器中有内容,如果使用不透明度,它将与背景一起消失。 谢谢。 问题答案: 您可以使用2个伪元素来做到这一点 CSS (悬停过渡) 为了能够看到div的内容,伪元素必须位于负的z-index中: 看起来IE不会触发此悬停 但会触发这一

  • 这是我之前一个问题的后续问题。我正在制作一个java游戏,它基本上是一个带有角色图像的JFrame,一些由fillRect()组成的healthbars,它们都位于背景图像之上。问题是健康栏和角色出现了,但背景图像没有出现。 下面是Game类的简化版本,其中包含main()和render()方法: 以下是BackGroundImage课程: 我关心的是render()方法重用“g”图形对象,将所有

  • 问题内容: 这是一个非常简单的程序,我已尽力而为,但JPanel并未提供背景图片。我只希望面板上有一个简单的背景图像。 这是我的代码: 提前致谢 问题答案: 更换 与

  • 我正在尝试在javaFX场景中加载背景图像。我在这里找到的答案不起作用。窗口打开,但它是空白的(没有图像)。

  • 在使用WordPress时,是否可以像通常在HTML中一样在CSS中获得背景图像。我试过这么做,但没用。

  • 问题内容: 有什么方法可以设置ff并打印背景图像? 我正在使用星星图像对一些技能进行分类,我将其设置为背景图像,并定位为设置一个开始,两个,三个等。当我尝试打印页面时,图像消失了。 那么,有什么方法可以使它们在我打印页面时出现,或者至少可以用*或可见的图像替换图像? 问题答案: 您是否考虑过使用打印样式表?这可以使您执行以下操作: 甚至更简单: 您可以通过css或在link元素上提供媒体标签来指定