CSS过渡有时在Chrome中跳过



我想在悬停在图像上时翻转带有旋转动画的图像(参见下面的代码)。当鼠标悬停在图像上时,它围绕其x轴旋转一秒钟(当鼠标离开图像时,它会返回)。

动画在Firefox和Safari中按预期工作。然而,Chrome有时会跳过动画并立即翻转图像。我不知道如何可靠地重现这个问题,因为它通常在动画被跳过之前工作几次。我录制了一个视频,所以你可以看到我的意思:https://www.youtube.com/watch?v=bpgi46F_5RU

这个CSS有问题吗?我最初怀疑这是由旋转角度引起的,但同样的问题甚至发生在其他类型的动画中。

.flippable-container {
  float: left;
  perspective: 1000px;
}
.flippable {
  transition: transform 1s;
}
.flippable-container:hover .flippable {
  transform: rotateX(180deg);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js"></script>
<div class="flippable-container">
  <img class="flippable" src="http://lorempixel.com/200/200/food"/>
</div>

Edit:正如TylerH评论的那样,它看起来像是Chrome中的一个bug。我在David Walsh的这个著名教程中看到了同样的问题:http://davidwalsh.name/css-flip。视频:https://www.youtube.com/watch?v=o_TViH4AmZ8。这个问题必须与鼠标交互有关,因为图像下方的"Toggle Flip"按钮工作正常。

我通过在所有可翻转的项目上放置z-index和position:relative来修复这个问题。我不知道为什么这会影响它,但它似乎已经完成了工作。

示例:http://jsfiddle.net/L0duLu3c/2/

.flippable-container {
float: left;
perspective: 1000px;
}
.flippable {
    transition: 0.6s;
    z-index:10;
    position:relative;
    transform: rotateX(0deg);
}
.flippable-container:hover .flippable {
    transform: rotateX(180deg);
    z-index:20;
}

相关内容

  • 没有找到相关文章

最新更新