【问题标题】:Rotate an element on the Y axis在 Y 轴上旋转元素
【发布时间】:2015-10-27 22:36:46
【问题描述】:

我设置了一个简单的关键帧动画以在 Y 轴上旋转元素,但它不稳定,我是否缺少属性?

.circle {
  height: 50px;
  width: 50px;
  border-radius: 50%;
  border: 5px solid black;
  margin: auto;
  animation: rotateY 1s infinite;
}
@-webkit-keyframes rotateY {
  0% { transform: rotateY( 60deg); }
  20% { transform: rotateY( 120deg); }
  40% { transform: rotateY( 180deg); }
  60% { transform: rotateY( 240deg); }
  80% { transform: rotateY( 300deg); }
  100% { transform: rotateY( 360deg); }
}
<div class="circle"></div>  

【问题讨论】:

    标签: css css-animations


    【解决方案1】:

    由于默认animation-timing-function(缓动)而创建了“断断续续”效果,您应该将其设置为linear

    另外,为关键帧动画指定 20%、40% 的状态是没有意义的,您可以使用“to”关键字指定结束状态:

    .circle {
      height: 50px;
      width: 50px;
      border-radius: 50%;
      border: 5px solid black;
      margin: auto;
      -webkit-animation: rotateY 1s infinite linear;
      animation: rotateY 1s infinite linear;
    }
    @-webkit-keyframes rotateY {
      to { -webkit-transform: rotateY(360deg); }
    }
    @keyframes rotateY {
      to { transform: rotateY(360deg); }
    }
    <div class="circle"></div>

    请注意,您还需要根据要支持的浏览器使用供应商前缀。请参阅canIuse 了解更多信息。

    【讨论】:

    • 完美,谢谢!我不知道你可以在关键帧中使用“to”!编辑 - SO 的 sn-p 似乎不起作用。
    【解决方案2】:

    你的意思是这样吗?

    .circle {
      height: 50px;
      width: 50px;
      border-radius: 50%;
      border: 5px solid black;
      margin: auto;
      animation: rotateY 1s infinite;
      animation-timing-function: linear;
    }
    @-webkit-keyframes rotateY {
      0% {
        transform: rotateY(0deg);
      }
      100% {
        transform: rotateY(360deg);
      }
    }
    <div class="circle"></div>

    其中的更改是添加一个线性的计时功能(而不是缓动),并使动画更清楚地了解正在发生的事情。

    【讨论】:

    • Linear 可以工作,但它在通过关键帧后似乎旋转不完美。
    猜你喜欢
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多