首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSS动画-动画bug?

CSS动画-动画bug?
EN

Stack Overflow用户
提问于 2017-10-24 09:02:31
回答 1查看 1.3K关注 0票数 1

我试图使用CSS动画动画一个立方体旋转,并暂停每一张脸设置时间。

笔在这里

代码语言:javascript
复制
@keyframes frontToLeft {
    75% { transform: rotateY(0); }
    100% { transform: rotateY(90deg); }
  }

  @keyframes leftToBack {
    75% { transform: rotateY(90deg); }
    100% { transform: rotateY(180deg); }
  }

  @keyframes backToRight {
    75% { transform: rotateY(180deg); }
    100% { transform: rotateY(270deg); }
  }

  @keyframes rightToFront {
    75% { transform: rotateY(270deg); }
    100% { transform: rotateY(360deg); }
  }

  .cube-container {
    padding-top: 200px;
    perspective: 800px;
    perspective-origin: 50% 100px;
  }

  .qube {
    position: relative;
    width: 200px;
    margin: 0 auto;
    transform-style: preserve-3d;

    animation-name: frontToLeft, leftToBack, backToRight, rightToFront;
    animation-timing-function: linear;
    animation-fill-mode: forwards;
    animation-duration: 2s, 2s, 2s, 2s;
    animation-delay: 2s, 4s, 6s, 8s;

   * {
      position: absolute;
      left: 0;
      top: 0;
      margin: 0;
      padding: 0;
      width: 200px;
      height: 200px;
      background: rgba(255,255,255,0.1);
      box-shadow: inset 0 0 30px rgba(125,125,125,0.8);
    }

    .front {
      transform: translateZ(100px);
    }

    .back {
      transform: translateZ(-100px) rotateY(180deg);
    }

    .top {
      transform: rotateX(-90deg) translateY(-100px);
      transform-origin: top center;
    }

    .bottom {
      transform: rotateX(90deg) translateY(100px);
      transform-origin: bottom center;
    }

    .left {
      transform: rotateY(270deg) translateX(-100px);
      transform-origin: center left;
    }

    .right {
      transform: rotateY(-270deg) translateX(100px);
      transform-origin: top right;
    }
  }
代码语言:javascript
复制
<div class="cube-container">
  <div class="qube">
    <div class="front">front</div>
    <div class="left">left</div>
    <div class="back">back</div>
    <div class="right">right</div>
    <div class="top">top</div>
    <div class="bottom">bottom</div>
  </div>
</div>   

在Google和Edge中,动画似乎出现了故障,但在Firefox中,它的工作原理是正常的。

我希望结果是:

  • 正面-暂停2秒,旋转2秒
  • 左脸-暂停2秒,旋转2秒
  • 后脸-暂停2秒,旋转2秒
  • 右面-暂停2秒,旋转2秒

有人能看出这会是怎么回事吗?我有代码预处理SCSS的前缀。

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-24 09:37:43

据我所知,对此进行测试,它看起来像是一个bug。我尝试过的任何东西似乎都不能纠正动画。正如您所说的,Firefox的工作方式与预期的一样。

我所能想到的是一个潜在的解决方案,就是将它组合成一个动画,如下所示:

代码语言:javascript
复制
@keyframes spinCube {
    20% { transform: rotateY(0deg); }
    25% { transform: rotateY(90deg); }
    45% { transform: rotateY(90deg); }
    50% { transform: rotateY(180deg); }
    70% { transform: rotateY(180deg); }
    75% { transform: rotateY(270deg); }
    95% { transform: rotateY(270deg); }
    100% { transform: rotateY(360deg); }
}

.qube {
animation: spinCube 8s 1 forwards;
}

这将需要一些调整,以使时间正确,但这是我唯一能想到的事情。

这里是这个替代解决方案的CodePen实例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46906276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档