JS实现的动画效果多半是用timmer实现的某个属性不断改变的过程。以下这个写好的函数是十分强大的~摘自JSDG 5th ed。附上我的注释:
/**
* AnimateCSS.js:
* This file defines a function named animateCSS(), which serves as a framework
* for creating CSS-based animations. The arguments to this function are:
*
* element: The HTML element to be animated.
* numFrames: The total number of frames in the animation.
* timePerFrame: The number of milliseconds to display each frame.
* animation: An object that defines the animation; described below.
* whendone: An optional function to call when the animation finishes.
* If specified, this function is passed element as its argument.
*
* The animateCSS() function simply defines an animation framework. It is
* the properties of the animation object that specify the animation to be
* done. Each property should have the same name as a CSS style property. The
* value of each property must be a function that returns values for that
* style property. Each function is passed the frame number and the total
* amount of elapsed time, and it can use these to compute the style value it
* should return for that frame. For example, to animate an image so that it
* slides in from the upper left, you might invoke animateCSS as follows:
*
* animateCSS(image, 25, 50, // Animate image for 25 frames of 50ms each
* { // Set top and left attributes for each frame as follows:
* top: function(frame,time) { return frame*8 + "px"; },
* left: function(frame,time) { return frame*8 + "px"; }
* });
*
* animateCSS()函数是作为一个基于CSS的动画实现框架。通过传递参数对象来制定动画样式。
* element:需要创建动画的HTML元素节点
* numFrames:动画的总帧数
* timePerFrame:每一帧的毫秒数
* animation:定义动画的详细参数对象
* whendone:动画执行完毕后的回调函数
*
* animation对象,每个属性的名称必须对应CSS的JS名,属性值为该CSS属性的计算函数
*
**/
function animateCSS(element, numFrames, timePerFrame, animation, whendone) {
var frame = 0; // Store current frame number
var time = 0; // Store total elapsed time
// Arrange to call displayNextFrame() every timePerFrame milliseconds.
// This will display each of the frames of the animation.
// 很显然只是安排调用displayNextFrame(),关键就在这个函数中
var intervalId = setInterval(displayNextFrame, timePerFrame);
// The call to animateCSS() returns now, but the previous line ensures that
// the following nested function will be invoked once for each frame
// of the animation.
// 在这里我们检查是否已经完成所有帧数,如果是,就清除timmer然后执行回调函数;
// 如果没有就遍历animation对象里的属性设置element的CSS属性。
function displayNextFrame() {
if (frame >= numFrames) { // First, see if we're done
clearInterval(intervalId); // If so, stop calling ourselves
if (whendone) whendone(element); // Invoke whendone function
return; // And we're finished
}
// Now loop through all properties defined in the animation object
for(var cssprop in animation) {
// For each property, call its animation function, passing the
// frame number and the elapsed time. Use the return value of the
// function as the new value of the corresponding style property
// of the specified element. Use try/catch to ignore any
// exceptions caused by bad return values.
// 这里执行每个属性的计算函数,给计算函数传递的是frame当前帧数,time已执行时间
try {
element.style[cssprop] = animation[cssprop](frame, time);
} catch(e) {}
}
frame++; // Increment the frame number
time += timePerFrame; // Increment the elapsed time
}
}
这个函数和jQuery的$.fn.animate()有异曲同工之妙……
文中的计算函数其实就是jQuery中的esaing函数
分享到:
相关推荐
了解DHTML,开发者需要掌握如何使用CSS来定义元素样式,通过JavaScript来操纵DOM节点,以及如何实现动画效果和事件处理。 CSS作为样式表语言,用于描述HTML或XML(包括如SVG、MathML等各种XML方言)文档的呈现。CSS...
DHTML 主要用于实现页面的动态效果,如滚动文本、下拉菜单、动画等,同时还能在不刷新整个页面的情况下更新内容,提供更流畅的用户体验。 **JavaScript DHTML 参考手册** 内容可能包括: 1. **基础语法**:介绍 ...
2. 动画效果:利用CSS和JavaScript实现元素的平移、旋转、缩放等动画效果。 3. 交互性:响应用户输入,如鼠标悬停、点击等,改变网页状态。 4. 层(Layers):通过CSS定位或JavaScript控制,允许元素在页面上自由...
书中可能详细解释了如何利用JavaScript改变HTML元素的样式、位置和内容,实现页面的动态效果,如动画、下拉菜单、滑块、模态对话框等。 4. **CSS(Cascading Style Sheets)**:CSS是用于控制网页外观和布局的样式...
CSS3是当前最新的版本,包含更多的选择器、动画、过渡和响应式设计功能。 【DHTML(动态超文本标记语言)】 DHTML是一种在HTML文档中结合使用CSS、JavaScript和DOM(文档对象模型)来创建交互式和动态网页的技术。...
《DHTML + CSS + JavaScript 实用手册》是一本详尽阐述网页制作技术的综合资源,包含三大部分:DHTML完全手册、CSS滤镜手册和JavaScript语言参考手册。这些手册为网页设计师和开发者提供了全面的指导,帮助他们创建...
DHTML使得网页不再只是静态展示信息,而是能够响应用户的交互,如鼠标悬停、点击等,进行内容的更新、动画效果的展示等。 在DHTML中,HTML负责结构,CSS负责样式,JavaScript则负责动态行为。JavaScript是一种轻量...
JavaScript 和 DHTML 是 web 开发中的重要技术,用于创建交互性和动态网页。在这个"JavaScript+DHTML语法与范例详解词典"中,我们将深入探讨这两个领域的核心概念、语法和应用。 JavaScript,作为一门轻量级的脚本...
JavaScript 和 DHTML 动态菜单是网页开发中的重要组成部分,它们为网站的导航提供了互动性和视觉吸引力。在本文中,我们将深入探讨这6种漂亮的JavaScript + DHTML 动态菜单,以及它们与.NET, AJAX, C#, Java 这些...
DHTML结合CSS3的动画属性和JavaScript的定时器函数,可以实现复杂的动态效果。 8. **异步通信(AJAX)**:AJAX允许在不刷新整个页面的情况下与服务器交换数据并局部更新页面。这极大地提升了用户体验,使得网页应用...
JavaScript、DHTML和CSS是构建动态、交互式Web页面的核心技术。这三者结合使用,可以为用户带来丰富的用户体验和高度可定制的界面设计。 **JavaScript** 是一种轻量级的脚本语言,广泛应用于客户端的网页开发。它...
4. **DHTML动画**:通过JavaScript改变元素的CSS属性来创建动画效果,如平移、旋转、缩放等。 5. **AJAX技术**:理解异步请求的工作原理,以及如何使用XMLHttpRequest或fetch API来发送和接收数据。 6. **跨浏览器...
6. **DHTML动画**:创建平滑的页面动画,包括过渡效果、时间线管理和动画库的使用。 7. **跨浏览器兼容性**:学习处理不同浏览器之间的差异,确保代码在主流浏览器上都能正常工作。 8. **最佳实践**:遵循代码优化...
6. DHTML 动画:通过JavaScript改变元素的位置、大小、透明度等属性,实现平滑的动画效果。 7. AJAX(异步JavaScript和XML):使用XMLHttpRequest对象进行后台数据通信,实现页面的局部刷新。 8. CSS与JavaScript...