球没有正确滚动CSS

时间:2015-01-10 14:36:53

标签: html css css3 css-animations

我的动画效果非常好,但它看起来滑倒了,似乎没有滚动。可能是什么问题?

FIDDLE HERE:http://jsfiddle.net/erkoda3m/2/

img {
  height: 150px;
  width: 150px;
  animation: roll 4s linear infinite;
  -webkit-animation: roll 4s linear infinite;
}
@-webkit-keyframes roll {
  0% {
    -webkit-transform: translateX(0px) rotate(0deg);
  }
  50% {
    -webkit-transform: translateX(300px) rotate(360deg);
  }
  100% {
    -webkit-transform: translateX(0px) rotate(0deg);
  }
}
@keyframes roll {
  0% {
    transform: translateX(0px) rotate(0deg);
  }
  50% {
    transform: translateX(300px) rotate(360deg);
  }
  100% {
    transform: translateX(0px) rotate(0deg);
  }
}
<img src="http://i.imgur.com/5NvOwB5.png">

1 个答案:

答案 0 :(得分:7)

直径 150px ,因此周长150π = 471.24px 。因此,如果旋转角度 360°,则translateX值将为球的周长,或 471.24px

img {
  height: 150px;
  width: 150px;
  animation: roll 4s linear infinite;
  -webkit-animation: roll 4s linear infinite;
}
@-webkit-keyframes roll {
  0% {
    -webkit-transform: translateX(0px) rotate(0deg);
  }
  50% {
    -webkit-transform: translateX(471.24px) rotate(360deg);
  }
  100% {
    -webkit-transform: translateX(0px) rotate(0deg);
  }
}
@keyframes roll {
  0% {
    transform: translateX(0px) rotate(0deg);
  }
  50% {
    transform: translateX(471.24px) rotate(360deg);
  }
  100% {
    transform: translateX(0px) rotate(0deg);
  }
}
<img src="http://i.imgur.com/5NvOwB5.png">

如果您希望translateX保持不变并更改rotate值,则可以按(400/471.24)*360 = 305.57deg

计算角度

img {
  height: 150px;
  width: 150px;
  animation: roll 4s linear infinite;
  -webkit-animation: roll 4s linear infinite;
}
@-webkit-keyframes roll {
  0% {
    -webkit-transform: translateX(0px) rotate(0deg);
  }
  50% {
    -webkit-transform: translateX(400px) rotate(305.57deg);
  }
  100% {
    -webkit-transform: translateX(0px) rotate(0deg);
  }
}
@keyframes roll {
  0% {
    transform: translateX(0px) rotate(0deg);
  }
  50% {
    transform: translateX(400px) rotate(305.57deg);
  }
  100% {
    transform: translateX(0px) rotate(0deg);
  }
}
<img src="http://i.imgur.com/5NvOwB5.png">