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 相关文章推荐
用javascript控制iframe滚动的代码
Apr 10 Javascript
Firefox和IE兼容性问题及解决方法总结
Oct 08 Javascript
express的中间件basicAuth详解
Dec 04 Javascript
jQuery中data()方法用法实例
Dec 27 Javascript
require.js的用法详解
Oct 20 Javascript
关于webpack2和模块打包的新手指南(小结)
Aug 07 Javascript
JavaScript正则表达式和级联效果
Sep 14 Javascript
vue实现重置表单信息为空的方法
Sep 29 Javascript
Nuxt.js开启SSR渲染的教程详解
Nov 30 Javascript
浅谈JavaScript中的“!!”作用
Aug 03 Javascript
JavaScript事件循环及宏任务微任务原理解析
Sep 02 Javascript
通过实例解析json与jsonp原理及使用方法
Sep 27 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
mysql建立外键
2006/11/25 PHP
ThinkPHP中redirect用法分析
2014/12/05 PHP
Laravel 5框架学习之环境与配置
2015/04/08 PHP
Prototype String对象 学习
2009/07/19 Javascript
JavaScript Cookie显示用户上次访问的时间和次数
2009/12/08 Javascript
javascript面向对象入门基础详细介绍
2012/09/05 Javascript
选择器中含有空格在使用示例及注意事项
2013/07/31 Javascript
jQuery客户端分页实例代码
2013/11/18 Javascript
jquery实现加载进度条提示效果
2015/11/23 Javascript
JQuery日历插件My97DatePicker日期范围限制
2016/01/20 Javascript
全面了解JavaScript的数据类型转换
2016/07/01 Javascript
基于JavaScript实现窗口拖动效果
2017/01/18 Javascript
微信小程序中input标签详解及简单实例
2017/05/18 Javascript
详解angularjs获取元素以及angular.element()用法
2017/07/25 Javascript
vue 虚拟dom的patch源码分析
2018/03/01 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
对Layer弹窗使用及返回数据接收的实例详解
2019/09/26 Javascript
[01:07:11]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python文件与目录操作实例详解
2016/02/22 Python
python使用fcntl模块实现程序加锁功能示例
2017/06/23 Python
tensorflow 恢复指定层与不同层指定不同学习率的方法
2018/07/26 Python
使用python判断你是青少年还是老年人
2018/11/29 Python
python制作图片缩略图
2019/04/30 Python
python-Web-flask-视图内容和模板知识点西宁街
2019/08/23 Python
带有css3动画效果的兼容多浏览器简单导航条示例
2014/01/26 HTML / CSS
浅析border-radius如何兼容IE
2016/04/19 HTML / CSS
白俄罗斯在线大型超市:e-dostavka.by
2019/07/25 全球购物
《吃水不忘挖井人》教学反思
2014/04/15 职场文书
县委常委班子对照检查材料思想汇报
2014/09/28 职场文书
校园广播稿精选
2014/10/01 职场文书
超市员工管理制度
2015/08/06 职场文书
浅谈Python numpy创建空数组的问题
2021/05/25 Python
Java详细解析==和equals的区别
2022/04/07 Java/Android
Android 中的类文件和类加载器详情
2022/06/05 Java/Android
python数字图像处理之图像的批量处理
2022/06/28 Python