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 easyui window 窗口关闭时的提示
Jun 22 Javascript
js函数的延迟加载实现代码
Oct 11 Javascript
提示$ is not defined错误分析及解决
Apr 09 Javascript
如何创建一个JavaScript弹出DIV窗口层的效果
Sep 25 Javascript
JS获取键盘上任意按键的值(实例代码)
Nov 12 Javascript
Bootstrap安装环境配置教程分享
May 27 Javascript
详解vue-cli 构建项目 vue-cli请求后台接口 vue-cli使用axios、sass、swiper
May 28 Javascript
用Node提供静态文件服务的方法
Jul 06 Javascript
webpack4 升级迁移的实现
Sep 12 Javascript
VUEX采坑之路之获取不到$store的解决方法
Nov 08 Javascript
Vue+ElementUI table实现表格分页
Dec 14 Javascript
JavaScript原始值与包装对象的详细介绍
May 11 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数组函数序列之array_intersect() 返回两个或多个数组的交集数组
2011/11/10 PHP
PHP 中关于ord($str)&amp;gt;0x80的详细说明
2012/09/23 PHP
php中的抽象方法和抽象类
2017/02/14 PHP
JavaScript基本概念初级讲解论坛贴的学习记录
2009/02/22 Javascript
javascript 多浏览器 事件大全
2010/03/23 Javascript
基于Jquery的文字自动截取(提供源代码)
2011/08/09 Javascript
20行代码实现的一个CSS覆盖率测试脚本
2013/07/07 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
AngularJS中的过滤器使用详解
2015/06/16 Javascript
jQuery实现类似淘宝网图片放大效果的方法
2015/07/08 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
jQuery UI插件实现百度提词器效果
2016/11/21 Javascript
js实现页面刷新滚动条位置不变
2016/11/27 Javascript
jQuery实现radio第一次点击选中第二次点击取消功能
2017/05/15 jQuery
JavaScript中的一些隐式转换和总结(推荐)
2017/12/22 Javascript
微信小程序修改swiper默认指示器样式的实例代码
2018/07/18 Javascript
mock.js实现模拟生成假数据功能示例
2019/01/15 Javascript
用vue 实现手机触屏滑动功能
2020/05/28 Javascript
[53:50]CHAOS vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python爬取十篇新闻统计TF-IDF
2018/01/03 Python
python抓取搜狗微信公众号文章
2019/04/01 Python
Python中遍历列表的方法总结
2019/06/27 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
python 实现从高分辨图像上抠取图像块
2020/01/02 Python
Python操作Elasticsearch处理timeout超时
2020/07/17 Python
Anaconda的安装与虚拟环境建立
2020/11/18 Python
如何用Matlab和Python读取Netcdf文件
2021/02/19 Python
英国大码女性时装零售商:Evans
2018/08/29 全球购物
西班牙语在线票务市场:SuperBoletería
2019/06/10 全球购物
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
2014/09/09 面试题
为什么要使用servlet
2016/01/17 面试题
优秀团员个人的自我评价
2013/10/02 职场文书
咖啡厅创业计划书范本
2014/01/22 职场文书
通信研究生自荐信
2014/02/01 职场文书
动漫设计与制作专业推荐信
2014/07/07 职场文书
党员干部学习三严三实心得体会
2016/01/05 职场文书