`
rockyuse
  • 浏览: 195417 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

使用requestAnimationFrame更好的实现javascript动画(转)

 
阅读更多
详细说明:http://www.cnblogs.com/rubylouvre/archive/2011/08/22/2148793.html

function animate(element, name, from, to, time) {
	time = time || 800; // 默认0.8秒
	var style = element.style;

	var latency = 13; // 时间间隔 每13ms一次变化
	var count = parseInt(time / latency); // 变化的次数
	var step = Math.round((to - from) / count); // 步长 每一步的变化量
	var now = from;

	function go() {
		count--;
		now = count ? now + step : to;
		style[name] = now + 'px';
		if (count) {
			setTimeout(go, latency);
		}
	}

	style[name] = from + 'px';
	setTimeout(go, latency);
}

var requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || window.oRequestAnimationFrame ||
function (callback) {
	setTimeout(callback, 1000 / 60);
};

function animate1(element, name, from, to, time) {
	time = time || 800; // 默认0.8秒
	var startTime = new Date;

	function go(timestamp) {
		console.log(timestamp)

		var progress = timestamp - startTime;
		if (progress >= time) {
			element.style[name] = to + 'px';
			return;
		}

		var now = (to - from) * (progress / time);
		element.style[name] = now.toFixed() + 'px';

		//console.log(now.toFixed())
		requestAnimationFrame(go);
	}

	element.style[name] = from + 'px';

	requestAnimationFrame(go);
}

//animate1(document.getElementById('holder'), 'marginLeft', 0, 180, 500)

 

分享到:
评论

相关推荐

    HTML5 JavaScript动画基础

    这些源码可以帮助读者更好地学习如何将理论知识转化为实际的动画项目。 总的来说,"HTML5 JavaScript动画基础"是一本非常适合初学者和有一定经验的开发者阅读的书籍,它将帮助读者掌握HTML5和JavaScript在动画领域...

    HTML5+JavaScript动画基础 源码

    在“HTML5+JavaScript动画基础 源码”这个主题中,我们将深入探讨如何利用这两种技术来实现丰富的网页动画效果。 ...Canvas是基于像素的画布,...同时,这也将有助于你更好地理解和应用现有的前端动画库,提升开发效率。

    css+javascript 实现扇形导航动画效果

    例如,为了更好地组织代码,开发者可能会选择使用模块化的方法,如ES6的`class`语法来创建一个导航类,或者使用jQuery等库来简化DOM操作。同时,为了保持代码的可维护性和可读性,良好的注释和遵循一定的编码规范也...

    缓动函数requestAnimationFrame 更好的实现浏览器经动画

    **requestAnimationFrame** 是一个浏览器提供的专门用于动画的API,它能更好地优化动画性能,并且适应用户的设备状态。在过去的动画实现中,我们通常使用 `setTimeout` 或 `setInterval` 来每隔一定时间更新屏幕,但...

    javascript实现队列动画

    `requestAnimationFrame`用于在浏览器准备好下一次重绘时执行动画,确保了动画的流畅性。 为了实现具体的动画效果,我们需要定义每个动画任务。这通常涉及到修改DOM元素的样式属性,如位置、透明度或尺寸,然后利用...

    javascript 制作动画

    为了获得最佳的性能,应优先考虑使用`requestAnimationFrame`而不是`setInterval`,因为它能更好地与浏览器的渲染循环同步,避免不必要的重绘和回流。 七、总结 JavaScript制作动画是一个涉及到DOM操作、时间控制...

    javaScript制作动画

    相比`setInterval`,`requestAnimationFrame`能更好地同步动画与浏览器的渲染周期。 4. **运动学算法**:在某些情况下,可能需要计算出元素在每一帧的位置。这可以通过运动学公式来实现,例如匀速直线运动(匀速...

    Javascript制作动画

    `requestAnimationFrame`会在浏览器准备好绘制新帧时执行,保证了更好的性能。 2. 尽量减少DOM操作 频繁的DOM操作会降低性能,尽量通过改变CSS属性而非重新渲染整个组件来实现动画。 3. 使用will-change属性 通过...

    一个简单而强大的JavaScript动画引擎.zip

    综上所述,"一个简单而强大的JavaScript动画引擎.zip"中的"Animation.js"很可能是实现上述功能的一个集大成者,为开发者提供了便利的动画解决方案。通过学习和使用这个库,可以深入了解JavaScript动画的原理和实践...

    JavaScript_从自定义动画到动画3D模型,本教程涵盖了所有内容.zip

    相比之下,`requestAnimationFrame()`更加推荐,因为它与浏览器的渲染循环同步,确保了更好的性能和用户体验。 进一步深入,压缩包中的“iphone_main.zip”可能包含了一个实际的项目示例,比如一个模拟iPhone动画的...

    用javascript实现的页面下雪功能

    总的来说,用JavaScript实现的页面下雪功能是一个结合了基本的JavaScript语法、DOM操作、动画原理和随机数生成的综合实例。通过理解和实践这样的项目,开发者可以提升在网页动态效果开发方面的能力,并进一步掌握...

    js实现旋转文字动画效果导航源码.zip

    `setInterval`每隔一定时间执行指定的函数,而`requestAnimationFrame`则与浏览器渲染循环同步,确保在每一帧时更新动画,提供更好的性能和流畅度。 在实际代码中,我们可能会创建一个包含文字的HTML元素,如`...

    javascript经典特效---弹出欢迎的动画小人.rar

    requestAnimationFrame在每一帧浏览器绘制前执行,这样可以确保动画与屏幕刷新同步,避免了不必要的渲染延迟,从而提供更好的视觉体验。 总的来说,“javascript经典特效---弹出欢迎的动画小人”是一个综合运用了...

    利用前端动画实现算法可视化,比如各种排序算法动画实现.zip

    为了实现动画效果,开发者可能会使用requestAnimationFrame API,它可以在浏览器下一次重绘之前调用指定的函数,从而创建平滑的动画效果。此外,CSS3的transition和animation属性也能为动画添加更丰富的视觉效果。 ...

    javascript制作动画

    在现代JavaScript中,我们可以使用Promise或async/await来处理异步动画,这样可以更好地组织代码,使其更易于理解和维护。 7. **CSS Transitions 和 Keyframe Animations**: 虽然主要讨论的是JavaScript动画,但...

    原生js实现卡片式挂历日历翻转特效动画.zip

    在本项目中,我们关注的是一个使用纯JavaScript(原生js)实现的卡片式挂历日历翻转特效动画。这种特效通常用于增强用户界面,为日历展示提供一种动态且吸引人的呈现方式。下面我们将深入探讨这个项目的相关知识点。...

    翻页展示JavaScript特效

    5. **动画框架**:为了更好地控制动画的执行顺序和性能,开发者可能会选择使用像jQuery、GreenSock等JavaScript动画库。这些库提供了高级的动画控制功能,如帧动画、缓动函数等,能够帮助创建更复杂的翻页动画效果。...

    用javascript制作逐帧动画电影 JS长图位移动画.zip

    可以使用setTimeout来安排下一次调用,但为了得到更流畅的动画,requestAnimationFrame通常是更好的选择,因为它能与浏览器的渲染循环同步,避免不必要的延迟。 在实际应用中,你可能还需要考虑一些额外的因素,...

Global site tag (gtag.js) - Google Analytics