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 相关文章推荐
5 cool javascript apps
Mar 24 Javascript
用js模拟JQuery的show与hide动画函数代码
Sep 20 Javascript
使用jquery写个更改表格行顺序的小功能
Apr 29 Javascript
整理AngularJS中的一些常用指令
Jun 16 Javascript
js实现股票实时刷新数据案例
May 14 Javascript
强大的 Angular 表单验证功能详细介绍
May 23 Javascript
设置cookie指定时间失效(实例代码)
May 28 Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
Aug 16 Javascript
Vue多环境代理配置方法思路详解
Jun 21 Javascript
javascript设计模式 ? 职责链模式原理与用法实例分析
Apr 16 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
Sep 04 Javascript
vue+elementui 实现新增和修改共用一个弹框的完整代码
Jun 08 Vue.js
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 EOT定界符的使用详解
2008/09/30 PHP
调整PHP的性能
2013/10/30 PHP
php 根据url自动生成缩略图并处理高并发问题
2014/01/23 PHP
PHP合并静态文件详解
2014/11/14 PHP
PHP处理postfix邮件内容的方法
2015/06/16 PHP
php基于单例模式封装mysql类完整实例
2016/10/18 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
2019/10/24 PHP
javascript利用初始化数据装配模版的实现代码
2010/11/17 Javascript
js Map List 遍历使用示例
2013/07/10 Javascript
JQuery筛选器全系列介绍
2013/08/27 Javascript
javacript使用break内层跳出外层循环分析
2015/01/12 Javascript
JS文字球状放大效果代码分享
2015/08/19 Javascript
js获取图片宽高的方法
2015/11/25 Javascript
VUE-Table上绑定Input通过render实现双向绑定数据的示例
2018/08/27 Javascript
uni-app自定义导航栏按钮|uniapp仿微信顶部导航条功能
2019/11/12 Javascript
JS canvas实现画板和签字板功能
2021/02/23 Javascript
[24:42]VP vs TNC Supermajor小组赛B组 BO3 第三场 6.2
2018/06/03 DOTA
Python 流程控制实例代码
2009/09/25 Python
python实现2048小游戏
2015/03/30 Python
Python实现字符串格式化的方法小结
2017/02/20 Python
python读取二进制mnist实例详解
2017/05/31 Python
Ubuntu 下 vim 搭建python 环境 配置
2017/06/12 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
Python处理时间日期坐标轴过程详解
2019/06/25 Python
基于python代码批量处理图片resize
2020/06/04 Python
eDreams澳大利亚:预订机票、酒店和度假产品
2017/04/19 全球购物
Carolina工作鞋官网:Carolina Footwear
2019/03/14 全球购物
Fnac西班牙官网:法国文化和电子产品零售商
2021/03/14 全球购物
大学本科生的个人自我评价
2013/12/09 职场文书
2014小学植树节活动总结
2014/03/10 职场文书
反邪教宣传工作方案
2014/05/07 职场文书
房地产广告策划方案
2014/05/15 职场文书
2014年幼儿园园长工作总结
2014/12/17 职场文书
青涩记忆观后感
2015/06/18 职场文书
如何做好工作总结!
2019/04/10 职场文书