• 使用模块化管理工具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 })
  • 相关阅读:
    Educational Codeforces Round 23 D. Imbalanced Array(单调栈)
    hdu 4355 Party All the Time(三分)
    Educational Codeforces Round 21 F. Card Game(网络流之最大点权独立集)
    qscoj Round 1(div 2)
    玲珑杯 ACM Round #10
    hihoCoder #27
    Codeforces Round #396(div 2)
    高数A(下)第九章
    Mutual Training for Wannafly Union #5
    寒假集训补完
  • 原文地址:https://www.cnblogs.com/amaya-mei/p/6056025.html
Copyright © 2020-2023  润新知