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 相关文章推荐
基于mootools 1.3框架下的图片滑动效果代码
Apr 22 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
Jun 16 Javascript
js实现仿QQ秀换装效果的方法
Mar 04 Javascript
javascript的变量、传值、传址、参数之间关系
Jul 26 Javascript
CKEditor无法验证的解决方案(js验证+jQuery Validate验证)
May 09 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
May 31 Javascript
AngularJS HTML DOM详解及示例代码
Aug 17 Javascript
利用Angularjs实现幻灯片效果
Sep 07 Javascript
js实现点击按钮弹出上传文件的窗口
Dec 23 Javascript
protractor的安装与基本使用教程
Jul 07 Javascript
AngularJs点击状态值改变背景色的实例
Dec 18 Javascript
vue移动端的左右滑动事件详解
Jun 17 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+mysql分页代码详解
2008/03/27 PHP
php curl 登录163邮箱并抓取邮箱好友列表的代码(经测试)
2011/04/07 PHP
php读取csv实现csv文件下载功能
2013/12/18 PHP
php限制ip地址范围的方法
2015/03/31 PHP
PHP数据库操作三:redis用法分析
2017/08/16 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
IE6/7/8/9不支持exec的简写方式
2011/05/25 Javascript
jquery实现excel导出的方法
2013/04/04 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
Jquery动态更改一张位图的src与Attr的使用
2013/07/31 Javascript
jQuery实现带动画效果的多级下拉菜单代码
2015/09/08 Javascript
BootStrap智能表单实战系列(九)表单图片上传的支持
2016/06/13 Javascript
Node.js + Redis Sorted Set实现任务队列
2016/09/19 Javascript
jquery checkbox的相关操作总结
2016/10/17 Javascript
微信小程序 底部导航栏目开发资料
2016/12/05 Javascript
JS实现的ajax和同源策略(实例讲解)
2017/12/01 Javascript
用ES6写全屏滚动插件的示例代码
2018/05/02 Javascript
关于vue.js中实现方法内某些代码延时执行
2019/11/14 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
2020/07/15 Javascript
[58:12]Ti4第二日主赛事败者组 LGD vs iG 3
2014/07/21 DOTA
Python如何快速实现分布式任务
2017/07/06 Python
python中返回矩阵的行列方法
2018/04/04 Python
win7下python3.6安装配置方法图文教程
2018/07/31 Python
Python3.5集合及其常见运算实例详解
2019/05/01 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
2019/10/25 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
2020/02/15 Python
Columbia美国官网:美国著名的户外服装品牌
2016/11/24 全球购物
如何进行有效的自我评价
2013/09/27 职场文书
应届毕业生的自我鉴定
2013/11/13 职场文书
文明礼仪事迹材料
2014/01/09 职场文书
便利店的创业计划书
2014/01/15 职场文书
个人现实表现材料
2014/02/04 职场文书
医生学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
2016民族团结先进个人事迹材料
2016/02/26 职场文书
Python数据分析之pandas函数详解
2021/04/21 Python