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 相关文章推荐
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
Jan 22 Javascript
jQuery版Tab标签切换
Mar 16 Javascript
JQuery对checkbox操作 (循环获取)
May 20 Javascript
javascript中判断json的方法总结
Aug 27 Javascript
AngularJS中的过滤器filter用法完全解析
Apr 22 Javascript
几句话带你理解JS中的this、闭包、原型链
Sep 26 Javascript
EasyUI为Numberbox添加blur事件的方法
Mar 05 Javascript
快速将Vue项目升级到webpack3的方法步骤
Sep 14 Javascript
vue中的自定义分页插件组件的示例
Aug 18 Javascript
vue+web端仿微信网页版聊天室功能
Apr 30 Javascript
在vue中动态添加class类进行显示隐藏实例
Nov 09 Javascript
webpack proxy 使用(代理的使用)
Jan 10 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 中的str_replace 函数总结
2007/04/27 PHP
php PDO中文乱码解决办法
2009/07/20 PHP
很让人受教的 提高php代码质量36计
2012/09/05 PHP
解析PHP对现有搜索引擎的调用
2013/06/25 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
2013/10/16 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
js jquery分别实现动态的文件上传操作按钮的添加和删除
2014/01/13 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
2014/01/27 Javascript
解决js函数闭包内存泄露问题的办法
2016/01/25 Javascript
BootStrap学习系列之布局组件(下拉,按钮组[toolbar],上拉)
2017/01/03 Javascript
js从输入框读取内容,比较两个数字的大小方法
2017/03/13 Javascript
Javascript防止图片拉伸的自适应处理方法
2017/12/26 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
2018/09/13 Javascript
layui使用数据表格实现购物车功能
2019/07/26 Javascript
js HTML DOM EventListener功能与用法实例分析
2020/04/27 Javascript
修改Vue打包后的默认文件名操作
2020/08/12 Javascript
Python实现TCP协议下的端口映射功能的脚本程序示例
2016/06/14 Python
python判断字符串编码的简单实现方法(使用chardet)
2016/07/01 Python
Python3 模块、包调用&amp;路径详解
2017/10/25 Python
python opencv设置摄像头分辨率以及各个参数的方法
2018/04/02 Python
Pytorch转onnx、torchscript方式
2020/05/25 Python
HTML5 Canvas draw方法制作动画效果示例
2013/07/11 HTML / CSS
HTML5图片预览实例分享
2014/06/04 HTML / CSS
Cotton On南非:澳洲时尚平价品牌
2018/06/28 全球购物
西班牙自行车和跑步商店:Alltricks
2018/07/07 全球购物
XD健身器材:Kevlar球、Crossfit健身球
2019/03/26 全球购物
麦当劳印度网上订餐:McDelivery
2020/03/16 全球购物
南京某公司笔试题
2013/01/27 面试题
软件工程专业推荐信
2013/10/28 职场文书
《九色鹿》教学反思
2014/02/27 职场文书
学校门卫岗位职责
2014/03/16 职场文书
模具设计与制造专业自荐书
2014/07/01 职场文书
合伙经营协议书范本
2014/09/13 职场文书
2014党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
上班迟到检讨书范文300字
2014/11/02 职场文书