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 Base类 包含基本的方法
Jul 22 Javascript
js获取 type=radio 值的方法
May 09 Javascript
基于jquery实现简单的分页控件
Mar 17 Javascript
jQuery+HTML5+CSS3制作支持响应式布局时间轴插件
Aug 10 Javascript
将Sublime Text 3 添加到右键中的简单方法
Dec 12 Javascript
jQuery滚动条美化插件nicescroll简单用法示例
Apr 18 jQuery
vue引用js文件的多种方式(推荐)
May 17 Javascript
JS实现520 表白简单代码
May 21 Javascript
解决vue keep-alive 数据更新的问题
Sep 21 Javascript
elementUI select组件value值注意事项详解
May 29 Javascript
vue视频播放插件vue-video-player的具体使用方法
Nov 08 Javascript
微信小程序接入vant Weapp组件的详细步骤
Oct 28 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写的基于Memcache的Queue实现代码
2011/11/27 PHP
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
2013/06/18 PHP
Zend Framework教程之Zend_Config_Xml用法分析
2016/03/23 PHP
PHP魔术方法以及关于独立实例与相连实例的全面讲解
2016/10/18 PHP
Laravel5.1 框架响应基本用法实例分析
2020/01/04 PHP
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
用js做一个小游戏平台 (一)
2009/12/29 Javascript
JavaScript学习笔记(一) js基本语法
2011/10/25 Javascript
JavaScript函数作用域链分析
2015/02/13 Javascript
Hammer.js+轮播原理实现简洁的滑屏功能
2016/02/02 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
2017/02/05 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
2017/04/20 jQuery
解决vue项目nginx部署到非根目录下刷新空白的问题
2018/09/27 Javascript
原生js实现Flappy Bird小游戏
2018/12/24 Javascript
[31:01]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS Orenda
2014/05/23 DOTA
[55:18]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python里disconnect UDP套接字的方法
2015/04/23 Python
Python 实现淘宝秒杀的示例代码
2018/01/02 Python
Python实现简易版的Web服务器(推荐)
2018/01/29 Python
Python socket套接字实现C/S模式远程命令执行功能案例
2018/07/06 Python
TensorFlow打印tensor值的实现方法
2018/07/27 Python
不知道这5种下划线的含义,你就不算真的会Python!
2018/10/09 Python
numpy给array增加维度np.newaxis的实例
2018/11/01 Python
浅谈Python2之汉字编码为unicode的问题(即类似\xc3\xa4)
2019/08/12 Python
Python 基于jwt实现认证机制流程解析
2020/06/22 Python
css3的transform中scale缩放详解
2014/12/08 HTML / CSS
HTML5 Canvas的性能提高技巧经验分享
2013/07/02 HTML / CSS
HTML5中使用postMessage实现两个网页间传递数据
2016/06/22 HTML / CSS
DKNY品牌官网:纽约大都会时尚风格
2016/10/20 全球购物
英国Zoro工具:手动工具,电动工具和个人防护用品
2016/11/02 全球购物
枚举与#define宏的区别
2014/04/30 面试题
工程类专业自荐信范文
2014/03/09 职场文书
就业推荐表自我鉴定范文
2014/03/21 职场文书
行政专员求职信范文
2014/05/03 职场文书
入党积极分子学习党的纲领思想汇报
2014/09/13 职场文书
2016关于学习党章的心得体会
2016/01/15 职场文书