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 相关文章推荐
JS是按值传递还是按引用传递
Jan 30 Javascript
js去除浏览器默认底图的方法
Jun 08 Javascript
浅谈JSON.parse()和JSON.stringify()
Jul 14 Javascript
Bootstrap CSS组件之导航条(navbar)
Dec 17 Javascript
JavaScript数据结构之数组的表示方法示例
Apr 12 Javascript
Bootstrap实现各种进度条样式详解
Apr 13 Javascript
Node.js如何实现注册邮箱激活功能 (常见)
Jul 23 Javascript
基于vue.js快速搭建图书管理平台
Oct 29 Javascript
JS实现的JSON序列化操作简单示例
Jul 02 Javascript
vue用Object.defineProperty手写一个简单的双向绑定的示例
Jul 09 Javascript
elementUI Vue 单个按钮显示和隐藏的变换功能(两种方法)
Sep 04 Javascript
手把手教你写一个微信小程序(推荐)
Oct 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
paypal即时到账php实现代码
2010/11/28 PHP
php配置php-fpm启动参数及配置详解
2013/11/04 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
2016/11/02 PHP
Jquery中offset()和position()的区别分析
2015/02/05 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
2015/03/04 Javascript
基于jquery实现在线选座订座之影院篇
2015/08/24 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(二)
2016/05/17 Javascript
辨析JavaScript中的Undefined类型与null类型
2016/05/26 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
AngularJS折叠菜单实现方法示例
2017/05/18 Javascript
JS之if语句对接事件动作逻辑(详解)
2017/06/28 Javascript
javaScript canvas实现(画笔大小 颜色 橡皮的实例)
2017/11/28 Javascript
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
深入浅析Vue中的Prop
2018/06/10 Javascript
layer.confirm点击第一个按钮关闭弹出框的方法
2019/09/09 Javascript
JavaScript实现简单计算器功能
2019/12/19 Javascript
vue实现移动端图片上传功能
2019/12/23 Javascript
vue+canvas实现移动端手写签名
2020/05/21 Javascript
机器学习经典算法-logistic回归代码详解
2017/12/22 Python
Python3读取Excel数据存入MySQL的方法
2018/05/04 Python
django多个APP的urls设置方法(views重复问题解决)
2019/07/19 Python
Pandas时间序列基础详解(转换,索引,切片)
2020/02/26 Python
浅析Python 多行匹配模式
2020/07/24 Python
python中scrapy处理项目数据的实例分析
2020/11/22 Python
Ubuntu20下的Django安装的方法步骤
2021/01/24 Python
Manduka官网:瑜伽垫、瑜伽毛巾和服装
2018/07/02 全球购物
DC Shoes澳大利亚官方网上商店:购买DC鞋子
2019/10/25 全球购物
大学生物业管理求职信
2013/10/24 职场文书
经济管理专业自荐信
2013/12/30 职场文书
教育英语专业毕业生的求职信
2014/03/13 职场文书
分居协议书范本(律师见证版)
2014/11/26 职场文书
大学生团员个人总结
2015/02/14 职场文书
工作迟到检讨书范文
2015/05/06 职场文书
MySQL系列之三 基础篇
2021/07/02 MySQL
排查并解决MySQL生产库内存使用率高的报警
2022/04/11 MySQL
使用CSS实现六边形的图片效果
2022/08/05 HTML / CSS