JS实现图片旋转动画效果封装与使用示例


Posted in Javascript onJuly 09, 2018

本文实例讲述了JS实现图片旋转动画效果封装与使用。分享给大家供大家参考,具体如下:

核心封装代码如下:

//图片动画封装
function SearchAnim(opts) {
    for(var i in SearchAnim.DEFAULTS) {
      if (opts[i] === undefined) {
        opts[i] = SearchAnim.DEFAULTS[i];
      }
    }
    this.opts = opts;
    this.timer = null;
    this.elem = document.getElementById(opts.elemId);
    this.startAnim();
}
SearchAnim.prototype.startAnim = function () {
    this.stopAnim();
    this.timer = setInterval(() => {
      var startIndex = this.opts.startIndex;
      if (startIndex == 360) {
        this.opts.startIndex = 0;
      }
      this.elem.style.transform = "rotate("+ (startIndex) +"deg)";
      this.opts.startIndex += 5;
    }, this.opts.delay);
    setTimeout(() => {
      this.stopAnim();
    }, this.opts.duration);
}
SearchAnim.prototype.stopAnim = function() {
    if (this.timer != null) {
      clearInterval(this.timer);
    }
}
SearchAnim.DEFAULTS = {
    duration : 60000,
    delay : 200,
    direction : true,
    startIndex : 0,
    endIndex : 360
}

使用方法:

随便创建一img标签

然后如下调用即可:

new SearchAnim({
  elemId : "wait-icon",
  delay : 20,
});

完整示例代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>3water.com JS旋转动画</title>
</head>
<img src="//img.jbzj.com/file_images/article/201807/201879100307926.jpg" id="wait-icon"/>
<script>
//图片动画封装
function SearchAnim(opts) {
    for(var i in SearchAnim.DEFAULTS) {
      if (opts[i] === undefined) {
        opts[i] = SearchAnim.DEFAULTS[i];
      }
    }
    this.opts = opts;
    this.timer = null;
    this.elem = document.getElementById(opts.elemId);
    this.startAnim();
}
SearchAnim.prototype.startAnim = function () {
    this.stopAnim();
    this.timer = setInterval(() => {
      var startIndex = this.opts.startIndex;
      if (startIndex == 360) {
        this.opts.startIndex = 0;
      }
      this.elem.style.transform = "rotate("+ (startIndex) +"deg)";
      this.opts.startIndex += 5;
    }, this.opts.delay);
    setTimeout(() => {
      this.stopAnim();
    }, this.opts.duration);
}
SearchAnim.prototype.stopAnim = function() {
    if (this.timer != null) {
      clearInterval(this.timer);
    }
}
SearchAnim.DEFAULTS = {
    duration : 60000,
    delay : 200,
    direction : true,
    startIndex : 0,
    endIndex : 360
}
new SearchAnim({
  elemId : "wait-icon",
  delay : 20,
});
</script>
<body>
</body>
</html>

使用本站HTML/CSS/JS在线运行测试工具:http://tools.3water.com/code/HtmlJsRun,可得到如下测试运行效果:

 JS实现图片旋转动画效果封装与使用示例

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
重载toString实现JS HashMap分析
Mar 13 Javascript
js 采用delete实现继承示例代码
May 20 Javascript
JavaScript常用的弹出广告及背投广告实现方法
Feb 06 Javascript
javascript实现input file上传图片预览效果
Dec 31 Javascript
javascript 四十条常用技巧大全
Sep 09 Javascript
vue组件学习教程
Sep 09 Javascript
JavaScript动态加载重复绑定问题
Apr 01 Javascript
基于 vue-skeleton-webpack-plugin 的骨架屏实战
Aug 05 Javascript
package.json中homepage属性的作用详解
Mar 11 Javascript
JavaScript ES6 Class类实现原理详解
May 08 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
Dec 02 Vue.js
node.js使用express-fileupload中间件实现文件上传
Jul 16 Javascript
JavaScript的Object.defineProperty详解
Jul 09 #Javascript
Vue2.0仿饿了么webapp单页面应用详细步骤
Jul 08 #Javascript
mac上配置Android环境变量的方法
Jul 08 #Javascript
vue.js使用watch监听路由变化的方法
Jul 08 #Javascript
vue.js通过路由实现经典的三栏布局实例代码
Jul 08 #Javascript
jQuery插件实现弹性运动完整示例
Jul 07 #jQuery
vue.js使用v-pre与v-html输出HTML操作示例
Jul 07 #Javascript
You might like
php ci框架验证码实例分析
2013/06/26 PHP
淘宝ip地址查询类分享(利用淘宝ip库)
2014/01/07 PHP
php+mysql查询优化简单实例
2015/01/13 PHP
PHP数据库处理封装类实例
2016/12/24 PHP
PHP基于进程控制函数实现多线程
2020/12/09 PHP
JS实现在线统计一个页面内鼠标点击次数的方法
2015/02/28 Javascript
jquery+json实现数据二级联动的方法
2015/11/28 Javascript
基于jquery fly插件实现加入购物车抛物线动画效果
2016/04/05 Javascript
javascript关于继承解析
2016/05/10 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
jQuery实现背景滑动菜单
2016/12/02 Javascript
Javascript实现登录记住用户名和密码功能
2017/03/22 Javascript
基于Vuejs和Element的注册插件的编写方法
2017/07/03 Javascript
Vue cli3 库模式搭建组件库并发布到 npm的流程
2018/10/12 Javascript
[05:49]2014DOTA2TI4正赛第二日综述 昔日冠军纷纷落马 VG LGD占尽先机
2014/07/20 DOTA
Python实现的随机森林算法与简单总结
2018/01/30 Python
python实现word 2007文档转换为pdf文件
2018/03/15 Python
Python File readlines() 使用方法
2018/03/19 Python
pandas全表查询定位某个值所在行列的方法
2018/04/12 Python
Python Tkinter模块实现时钟功能应用示例
2018/07/23 Python
python简单操作excle的方法
2018/09/12 Python
Python xlrd/xlwt 创建excel文件及常用操作
2020/09/24 Python
详解Django ORM引发的数据库N+1性能问题
2020/10/12 Python
python中uuid模块实例浅析
2020/12/29 Python
python中spy++的使用超详细教程
2021/01/29 Python
使用数据结构给女朋友写个Html5走迷宫游戏
2019/11/26 HTML / CSS
英国森林假期:Forest Holidays
2021/01/01 全球购物
金讯Java笔试题目
2013/06/18 面试题
销售人员自我评价怎么写
2013/09/19 职场文书
家长会邀请书
2014/01/25 职场文书
顶撞领导检讨书
2014/01/29 职场文书
如何写好自荐信
2014/04/07 职场文书
2014年中秋寄语
2014/08/11 职场文书
给医院的感谢信
2015/01/21 职场文书
餐馆开业致辞
2015/08/01 职场文书
导游词之宿迁乾隆行宫
2019/10/15 职场文书