zoukankan      html  css  js  c++  java
  • 使用模块化管理工具seajs实现简单动画效果

    今天使用模块化的管理工具seajs实现了一个简单的动画效果。

    seajs具有简单友好的模块定义规范。seajs遵循CMD规范,可以像nodejs一样编写代码。

    seajs具有自然直观的代码组织方式。依赖的自动加载,配置简洁清晰。

    通过学习,发现seajs的使用是具有一个标准的格式的,如下define(function(require,exports,module){ //定义的代码块 });其中回调的参数名和顺序都是不可改变的。

    这次小动画实现的文件结构:

    word.html代码如下:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Document</title>
     6     <style>
     7         img{
     8             opacity: 0.5;
     9             transition-duration: 0.8s;
    10         }
    11     </style>
    12     <script src='./sea.js'></script>
    13     <script>
    14         //使用定义好的js模块
    15         seajs.use('./game/contral.js',function(obj){});
    16     </script>
    17 </head>
    18 <body>
    19     <div id="container">
    20         <img src="./img/h.png" alt="">
    21         <img src="./img/h.png" alt="">
    22         <img src="./img/h.png" alt="">
    23         <img src="./img/h.png" alt="">
    24         <img src="./img/h.png" alt="">
    25         <img src="./img/h.png" alt="">
    26     </div>
    27 </body>
    28 </html>

    rotate.js代码如下:

     1 define(function(require,exports,module){
     2     //引入jq,在这里需要将jq做稍微的改动,
     3     //将jq的代码也用seajs语法模块化
     4     var $=require('../jquery.js');
     5     //定义函数,通过传入容器id使所有的容器下的图片运动起啦
     6     var RotateWord = function(id){
     7         this.container = $(id);
     8         this.icons = this.container.children(); //所有的图片
     9         //定义一个方法的数组用来存放方法
    10         this.arr = [];
    11     }
    12 
    13     module.exports =RotateWord;
    14     //定义一个随机数
    15     var random = function(num){
    16         return Math.random()*num;
    17     }
    18 
    19     //给RotateWord添加方法
    20     RotateWord.prototype={
    21         //初始化图片的方法
    22         _init:function(){
    23             var arr = this.arr;
    24             $(this.icons).each(function(index,item){
    25                 var obj = $(item);  //将普通对象转化为jq对象
    26                 var time;
    27                 obj.hover(function(){
    28                     obj.css('opacity',1).css('transform','rotate(0deg)');
    29 
    30                 },
    31                 function(){
    32                     obj.css('opacity',0.5);
    33                     time && clearTimeout(time);
    34                     time=setTimeout(rotateFn,Math.ceil(random(5000)));
    35 
    36                 });
    37                 //定义一个旋转的方法
    38                 function rotateFn(){
    39                    obj.css('transform','rotate('+random(360)+'deg)');
    40                 }
    41                 //将每一个元素的方法保存起来
    42                 arr[index]=rotateFn;
    43             });
    44         },
    45         _rotate:function(){
    46             //让元素在默认的情况下有一定的旋转
    47             $(this.arr).each(function(n,fn){
    48                 setTimeout(fn,Math.ceil(random(3000)));
    49             });
    50         },
    51         render:function(){
    52             //开启动画效果
    53             this._init();
    54             this._rotate();
    55         }
    56     }
    57 })

    control.js(用于管理各个分模块,这个动画效果案例只有一个分模块页面)代码如下:

    1 define(function(require,exports,module){
    2     //导入定义好的模块
    3     var RotateWord =require('./rotate.js');
    4     //创建对象,调用方法,实现动画效果
    5     var obj = new RotateWord('#container');
    6     obj.render();
    7 })
  • 相关阅读:
    程序员生存定律--成长路上常见的坑
    程序员生存定律--升华成高手的可能方法
    程序员生存定律--如何尽快变的稍微专业一点
    程序员生存定律--编程的起点与可能的失足
    一段旅程的结束和另一端旅程的开始
    Cesium教程系列汇总
    数据可视化之总结
    可视化之Earth NullSchool
    可视化之AQICN
    可视化之Berkeley Earth
  • 原文地址:https://www.cnblogs.com/amaya-mei/p/6056025.html
Copyright © 2011-2022 走看看