`
robinqu
  • 浏览: 90455 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Javascript DHTML动画

阅读更多
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函数
分享到:
评论

相关推荐

    JavaScript DHTML CSS手册

    了解DHTML,开发者需要掌握如何使用CSS来定义元素样式,通过JavaScript来操纵DOM节点,以及如何实现动画效果和事件处理。 CSS作为样式表语言,用于描述HTML或XML(包括如SVG、MathML等各种XML方言)文档的呈现。CSS...

    Javascript DHTML参考手册

    DHTML 主要用于实现页面的动态效果,如滚动文本、下拉菜单、动画等,同时还能在不刷新整个页面的情况下更新内容,提供更流畅的用户体验。 **JavaScript DHTML 参考手册** 内容可能包括: 1. **基础语法**:介绍 ...

    Javascript DHTML HTML和CSS手册

    2. 动画效果:利用CSS和JavaScript实现元素的平移、旋转、缩放等动画效果。 3. 交互性:响应用户输入,如鼠标悬停、点击等,改变网页状态。 4. 层(Layers):通过CSS定位或JavaScript控制,允许元素在页面上自由...

    dhtml and javascript 英文原版

    书中可能详细解释了如何利用JavaScript改变HTML元素的样式、位置和内容,实现页面的动态效果,如动画、下拉菜单、滑块、模态对话框等。 4. **CSS(Cascading Style Sheets)**:CSS是用于控制网页外观和布局的样式...

    帮助文档 Css DHTML 手册 Javascript5.5语言参考

    CSS3是当前最新的版本,包含更多的选择器、动画、过渡和响应式设计功能。 【DHTML(动态超文本标记语言)】 DHTML是一种在HTML文档中结合使用CSS、JavaScript和DOM(文档对象模型)来创建交互式和动态网页的技术。...

    DHTML + CSS + JavaScript 实用手册

    《DHTML + CSS + JavaScript 实用手册》是一本详尽阐述网页制作技术的综合资源,包含三大部分:DHTML完全手册、CSS滤镜手册和JavaScript语言参考手册。这些手册为网页设计师和开发者提供了全面的指导,帮助他们创建...

    DHTML文档,JAVASCRIPT文档

    DHTML使得网页不再只是静态展示信息,而是能够响应用户的交互,如鼠标悬停、点击等,进行内容的更新、动画效果的展示等。 在DHTML中,HTML负责结构,CSS负责样式,JavaScript则负责动态行为。JavaScript是一种轻量...

    JavaScript+DHTML语法与范例详解词典

    JavaScript 和 DHTML 是 web 开发中的重要技术,用于创建交互性和动态网页。在这个"JavaScript+DHTML语法与范例详解词典"中,我们将深入探讨这两个领域的核心概念、语法和应用。 JavaScript,作为一门轻量级的脚本...

    6种漂亮的javascript+dhtml动态菜单

    JavaScript 和 DHTML 动态菜单是网页开发中的重要组成部分,它们为网站的导航提供了互动性和视觉吸引力。在本文中,我们将深入探讨这6种漂亮的JavaScript + DHTML 动态菜单,以及它们与.NET, AJAX, C#, Java 这些...

    DHTML JAVASCRIPT

    DHTML结合CSS3的动画属性和JavaScript的定时器函数,可以实现复杂的动态效果。 8. **异步通信(AJAX)**:AJAX允许在不刷新整个页面的情况下与服务器交换数据并局部更新页面。这极大地提升了用户体验,使得网页应用...

    JavaScript+DHTML+CSS

    JavaScript、DHTML和CSS是构建动态、交互式Web页面的核心技术。这三者结合使用,可以为用户带来丰富的用户体验和高度可定制的界面设计。 **JavaScript** 是一种轻量级的脚本语言,广泛应用于客户端的网页开发。它...

    JavaScript & DHTML 开发Web应用指南

    4. **DHTML动画**:通过JavaScript改变元素的CSS属性来创建动画效果,如平移、旋转、缩放等。 5. **AJAX技术**:理解异步请求的工作原理,以及如何使用XMLHttpRequest或fetch API来发送和接收数据。 6. **跨浏览器...

    JavaScript & DHTML Cookbook 中文版(第2版) 下载

    6. **DHTML动画**:创建平滑的页面动画,包括过渡效果、时间线管理和动画库的使用。 7. **跨浏览器兼容性**:学习处理不同浏览器之间的差异,确保代码在主流浏览器上都能正常工作。 8. **最佳实践**:遵循代码优化...

    JavaScript+DHTML语法与范例详解词典.zip

    6. DHTML 动画:通过JavaScript改变元素的位置、大小、透明度等属性,实现平滑的动画效果。 7. AJAX(异步JavaScript和XML):使用XMLHttpRequest对象进行后台数据通信,实现页面的局部刷新。 8. CSS与JavaScript...

Global site tag (gtag.js) - Google Analytics