请问如何让 转盘 缓动加速到最高速度后,继续保持最高速度的 恒速 循环旋转呢?

  1. 请问如何让 转盘 缓动加速到最高速度后,继续保持最高速度的 恒速 循环旋转?

  2. 并在 5秒后 才缓动减速,直到停止呢?

P.S:就相当于汽车从0加速到120,然后持续了5秒,再降到0的过程,不使用css3实现。

这里是示例地址,谢谢!
http://jsbin.com/yeholemexe/e...
demo

阅读 6.3k
3 个回答
   var deg = 0
    var sTime = Date.now()
    var duration = 1000
    var p = 0
    var speed = 0
    var maxSpeed = 15
    var stopDeg = null
    var canvas = document.querySelector('.dial')

    setTimeout(function () {
        stopDeg  = 78
        sTime    = Date.now()
        duration = 3000
    }, 5000)

    ;
    (function loop() {
        requestAnimationFrame(function () {
            p = (Date.now() - sTime) / duration
            if (stopDeg) {
                speed = maxSpeed * (1 - p)
                if (speed <= 0) return speed = 0
            } else {
                speed = maxSpeed * p
                if (speed > maxSpeed) speed = maxSpeed
            }

            deg += speed
            canvas.style.transform = 'rotate(' + deg + 'deg) translate3d(0,0,0)'
            loop()
        })
    })()

代码有些难看,不过实现了

css动画 ease-in-out 就有个加速 减速过程啊

谢邀。来晚了。顺手赞个。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题