正如标题所说..有没有任何可能的方法可以在不使用 Jquery、settimeout 和 setinterval 的情况下在 javascript 中拥有最简单的动画。我已经研究太久了,找不到任何东西。可能没有办法做到这一点,只是想知道。也在寻找跨浏览器的东西,所以 CSS 动画也不起作用。
4 回答
现在做大多数动画的“正确”方法是 with window.requestAnimationFrame
,它的作用类似于 a setTimeout
,它在指定的时间运行一个回调函数。
它经过优化以 60fps 运行,在某些浏览器 (FF) 中,它将为您提供下一次绘制之前的确切毫秒数,以便您可以非常精确地计算动画位置。
谷歌“requestAnimationFrame shim”用于旧浏览器的各种跨浏览器实现。垫片都使用setTimeout
- 没有办法解决这个问题。
不,你怎么能在没有间隔/超时的情况下做到这一点并且能够跨浏览器做到这一点?你需要一些东西来继续触发它。
除非您在用户输入上制作动画,否则不会。如果您在用户触发鼠标移动事件或页面滚动事件时为某些东西设置动画,它可以工作,但它会是走走停停的,并且 100% 依赖于用户触发它。
不,我认为没有任何方法可以在不使用setTimeout()
or的情况下暂停 javascript setInterval()
。
我能想到的唯一选择是让 javascript 等待一些事件,例如 XMLHttpRequest 对象响应,这太荒谬了。
如果您正在寻找一些方便的“暂停执行 (x) 毫秒并继续”,例如Thread.sleep()
在 JavaScript 或usleep()
Unix 系统上,那么可悲的是没有这样的东西。
我记得听说为了在 Google Sketchup 中运行的 Ruby 脚本上的计时目的,有人费心制作一个不可见的 HTML 窗口,只是为了运行一点 JavaScript,setInterval()
这样他们就有了计时机制。我认为,如果您不遗余力地运行 JavaScript 并且仍然使用 JavaScript,setInterval()
则可能没有其他选择。