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提取URL的搜索字符串中的参数(自定义函数实现)
Jan 22 Javascript
解析window.open的使用方法总结
Jun 19 Javascript
jquery为页面增加快捷键示例
Jan 31 Javascript
jQuery实现简单的点赞效果
May 29 Javascript
javascript截图 jQuery插件imgAreaSelect使用详解
May 04 Javascript
最常见的左侧分类菜单栏jQuery实现代码
Nov 28 Javascript
JS中用try catch对代码运行的性能影响分析
Dec 26 Javascript
Mac中安装nvm的教程分享
Dec 11 Javascript
jQuery基于闭包实现的显示与隐藏div功能示例
Jun 09 jQuery
在SSM框架下用laypage和ajax实现分页和数据交互的方法
Sep 27 Javascript
Vue实现点击当前元素以外的地方隐藏当前元素(实现思路)
Dec 04 Javascript
vue分页插件的使用方法
Dec 25 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
PHP4中实现动态代理
2006/10/09 PHP
php 变量未定义等错误的解决方法
2011/01/12 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
2013/12/22 PHP
浅谈PHP中类和对象的相关函数
2017/04/26 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
PHP+MySQL实现消息队列的方法分析
2018/05/09 PHP
用js来解决ajax读取页面乱码
2010/11/28 Javascript
基于jQuery的history历史记录插件
2010/12/11 Javascript
Extjs4中Form的使用之本地hiddenfield
2013/11/26 Javascript
javascript常用函数(1)
2015/11/04 Javascript
Bootstrap每天必学之进度条
2015/11/30 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
2016/07/14 Javascript
Node.js复制文件的方法示例
2016/12/29 Javascript
JS实现动态修改table及合并单元格的方法示例
2017/02/20 Javascript
jQuery选择器之层次选择器用法实例分析
2019/02/19 jQuery
[14:19]2018年度COSER大赛-完美盛典
2018/12/16 DOTA
Java多线程编程中ThreadLocal类的用法及深入
2016/06/21 Python
python数据分析数据标准化及离散化详解
2018/02/26 Python
python re模块的高级用法详解
2018/06/06 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
pytorch多GPU并行运算的实现
2019/09/27 Python
python中68个内置函数的总结与介绍
2020/02/24 Python
使用Python发现隐藏的wifi
2020/03/04 Python
PyQt5实现画布小程序
2020/05/30 Python
matplotlib bar()实现百分比堆积柱状图
2021/02/24 Python
HTML5 input placeholder 颜色修改示例
2014/05/30 HTML / CSS
h5调用摄像头的实现方法
2016/06/01 HTML / CSS
在数据文件自动增长时,自动增长是否会阻塞对文件的更新
2014/05/01 面试题
电子信息工程专业自荐书
2014/06/24 职场文书
运动会跳远广播稿5篇
2014/09/17 职场文书
2015年社区服务活动总结
2015/03/25 职场文书
2015年银行客户经理工作总结
2015/04/01 职场文书
营业员岗位职责范本
2015/04/14 职场文书
社区党务工作总结2015
2015/05/19 职场文书
Apache POI的基本使用详解
2021/11/07 Servers