【发布时间】:2015-01-27 08:19:09
【问题描述】:
我想知道是否可以使用 css 实现“加速,然后滑行”动画,例如 3D.js example
基本上,一个物体以 0 速度开始并加速它的运动,直到某一点,之后,它保持恒定的速度。
我认为可以通过将旋转动画两次应用于同一个元素但使用不同的参数来实现: * 首次旋转:对象旋转2秒,无延迟,具有缓入功能; * 之后:对象旋转 1.5 秒,延迟 2 秒以考虑第一次旋转,具有线性函数。这一次旋转无限重复。
所以我尝试了以下代码
.square {
width: 120px;
height: 120px;
background: #c00;
-webkit-animation:
spin 2s 0 ease-in 1,
spin 1.5s 2s linear infinite;
-moz-animation:
spin 2s 0 ease-in 1,
spin 1.5s 2s linear infinite;
animation:
spin 2s 0 ease-in 1,
spin 1.5s 2s linear infinite;
}
}
@-moz-keyframes spin {
100% { -moz-transform: rotate(360deg); }
}
@-webkit-keyframes spin {
100% { -webkit-transform: rotate(360deg); }
}
@keyframes spin {
100% { transform:rotate(360deg); }
}
我知道它与 3D.js 示例不同,但已经足够接近了。问题是对象在完成第一次旋转之前停了一点,看起来很奇怪。
我已经准备了一个小提琴来展示这个问题:http://jsfiddle.net/e0sLc8sw/
有什么想法吗?
感谢大家的帮助!
【问题讨论】:
-
我只能建议您查看
cubic-bezier计时功能。关键字版本已经存在,例如ease- jsfiddle.net/e0sLc8sw/3 -
jsfiddle.net/e0sLc8sw/6 如果去掉第二次旋转的延迟,对象不会停止
标签: css animation rotation acceleration