动画

帧:是动画里的最小单位,它是静态的图像
帧频:是一秒钟播放的帧的数量
一个完整的动画是如何实现的呢?
首先它是由很多帧组成的,人眼是有视觉暂留效果的,当一系列相似的图像用时间轴串联起来之后,如果它的时间间隔足够的小,那么人眼感知的就是一幅流畅的动画。(完全流畅30帧以上)(电影24帧)

实现方式

  • gif
  • flash
  • CSS3
  • JS

三要素

  • 对象 DOM
  • 属性 width height opacity Left...
  • 定时器 setInterval setTimeout requestAnimationFrame

setInterval

var intervalID = setInterval(func,delay[,param1,param2,...])

  • func 执行改变属性的操作
  • delay 触发的时间间隔,以毫秒为单位
  • 每隔指定时间都会执行一次

clearInterval(intervalID)

setTimeout

var timeoutID = setTimeout(func,[delay,param1,param2,...])

  • delay 触发的时间间隔,默认值为0即立即触发,在指定的时间间隔后只执行一次

clearTimeout(timeoutID)

requestAnimationFrame

var requestID = requestAnimationFrame(func)
cancelAnimationFrame(requestID)

  • 间隔时间是由显示器屏幕的刷新频率控制的(一秒刷新60次)

常用动画

  • 形变 改变宽高
  • 位移 改变相对位置
  • 旋转
  • 透明度
  • ...

动画函数

var animation = function(ele,attr,from,to){
/*
ele 要进行动画的DOM对象
attr 要改变的属性
from to 属性值从哪个值到哪个值
*/
    var distance = Math.abs(to - from);//距离
    var stepLength = distance/100;//步长
    var sign = (to - from)/distance;//符号
    var offset = 0; //偏移
    var step = function(){
        var tmpOffset = offset + stepLength;
        if(tmpOffset < distance){//每次改变步长
            ele.style[attr] = from + tmpOffset*sign + 'px';
            offset = tmpOffset;
        } else{
            ele.stylep[attr] = to + 'px';
            clearInterval(intervalID);
        }
    }
    ele.style[attr] = from +'px';
    var intervalID = setInterval(step,10);
}

图片轮播

进度条

  • prcsswrap 对象的父元素
  • drtn 进度条的一个时间
  • intrvl 触发定时器的时间间隔
  • callback 回调函数

左右移动

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 业界动画引擎 PhysicsJS: 基于JavaScript、模块化、可扩展、易于使用的物理引擎,githuban...
    ddai_Q阅读 700评论 0 1
  • 当我们要在页面上实现一些动画效果的时候,通常会考虑两种方式: 1、通过css3的animation+keyfram...
    点融黑帮阅读 1,315评论 0 28
  • 看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印象,因...
    DCbryant阅读 734评论 0 2
  • 原文地址:原生JavaScript中动画与特效的实现原理 转载请注明出处 现如今,许多页面上均有一些动画效果。适当...
    xiaoxiao昱阅读 3,189评论 0 10
  • 动画,顾名思义,就是能“动”的画。人的眼睛对图像有短暂的记忆效应,所以当眼睛看到多张图片连续快速的切换时,就会被认...
    彬_仔阅读 1,671评论 1 8