JavaScript 帧动画
来源:互联网 发布:自己开淘宝店赚钱吗 编辑:程序博客网 时间:2024/05/16 18:53
JavaScript 实现帧动画的方式有三种
- 图片元素的 element.style.backgroundPosition = “x y”;
- 父容器的 overflow:hidden; 和图片src元素的 element.style.transform = “translate(x, y)”;
- 使用canvas动态绘制
JavaScript 实现帧动画较CSS实现的优点
- 方便切割动画帧。由于每帧大小都是固定的,因此可以写成函数,而不用像CSS那样把每帧的位置都写一遍
- 动画状态可控。可以在任意时刻暂停或者恢复动画,或者在动画完成时执行某些操作。
代码实战
<html><head><style>.imageStyle { width: 241px; height: 180px; border-radius: 20px; border: 1px solid black; box-shadow: 5px 5px 5px #888; margin: 5px;}.imageBg { background-image: url("frameAnim.png");}#translateAnimDiv { overflow: hidden; display: inline-block;}</style></head><body><img id="positionAnimImg" class="imageStyle imageBg"><div id="translateAnimDiv" class="imageStyle"> <img id="translateAnimImg" src="frameAnim.png"></div><canvas id="canvas" width="241px" height="180px" class="imageStyle">Your browser can not support canvas</canvas><script> window.onload = function() { var positionAnimImg = document.getElementById("positionAnimImg"); var index = 0; setInterval(function() { positionAnimImg.style.backgroundPosition = -index*241 + "px 0"; index++; if(index >= 7) { index = 0; } }, 300); var translateAnimImg = document.getElementById("translateAnimImg"); var index = 0; setInterval(function() { translateAnimImg.style.transform = "translate(-" + index*14.3 + "%, 0)"; index++; if(index >= 7) { index = 0; } }, 300); var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); var index = 0; setInterval(function() { ctx.drawImage(translateAnimImg, index*241, 0, 240, 180, 0, 0, 240, 180); index++; if(index >= 7) { index = 0; } }, 300); }</script></body></html>
图片素材见鄙人上一篇博文《CSS3 帧动画》
http://blog.csdn.net/chy555chy/article/details/56489497
0 0
- JavaScript 帧动画
- javascript动画
- JavaScript 动画
- JavaScript 动画
- JavaScript动画
- JavaScript动画
- JavaScript动画
- JavaScript动画1-速度动画
- javascript 弹出动画对话框
- JavaScript 动画(三十六)
- javascript流畅动画
- JavaScript 闭包动画
- javascript控制flash动画
- JavaScript动画基础知识
- JavaScript动画函数
- JAVASCRIPT动画之一
- javascript 实现动画
- javascript之jquery 动画
- Intent传递数据与Activity启动模式singleTask的关系。
- easyui datagrid 相同列合并/编辑行后保存
- 学生选课抽签管理系统设计(二)
- 阿里云数据盘挂载遇到的一些问题总结
- 轻量级的测试工具:ContiPerf
- JavaScript 帧动画
- volatile详解
- 第一章 Spring简史
- 安卓开发入门篇:Android Studio导入ApiDemos
- Bean property 'interceptorDao' is not writable or has an invalid setter method. Did you mean 'interc
- 如何开启Ubuntu的SSH服务
- android 滑动监听
- SpringMVC + Swagger2 的使用
- SQLServer2016 AlwaysOn基于证书的搭建笔记