js实现的彩色方块飞舞奇幻效果


Posted in Javascript onJanuary 27, 2016

本文实例讲述了js实现的彩色方块飞舞奇幻效果。分享给大家供大家参考,具体如下:

运行效果截图如下:

js实现的彩色方块飞舞奇幻效果

具体代码如下:

<!DOCTYPE html>
<html>
 <head>
  <title>demo</title>
  <style type="text/css">
   body {
    margin:0; padding:0;
   }
   ul {
    list-style:none; margin:0; padding:0;
   }
   li {
    position:absolute;
   }
   #power {
    font-size:50px; line-height:100px; border:2px solid green; color:green;
    position:absolute; right:20px; bottom:20px; 
   }
  </style>
 </head>
 <body>
  <ul id="canvas"></ul>
 </body>
 <script type="text/javascript">
  var $ = function(id) {
   return document.getElementById(id);
  }
  var $_name = function(tag) {
   return document.getElementsByTagName(tag);
  }
  var color = function() {
   var _color = "rgb(";
   _color += Math.round(Math.random()*255);
   _color += ",";
   _color += Math.round(Math.random()*255);
   _color += ",";
   _color += Math.round(Math.random()*255);
   _color += ")";
   return _color;
  }
  var createLi = function(attr) {
   var ele = document.createElement("li");
   ele.style.backgroundColor = attr.bgColor || "black";
   ele.style.left = attr.left + "px";
   ele.style.top = attr.top + "px";
   ele.style.width = ele.style.height = "15px";
   ele.onmouseover = function() {
    var _self = this;
    var _rotate = 0;
    if(_self.interval) {
     clearInterval(_self.interval);
     _self.style.backgroundColor = _self._backgroundColorBK;
    }
    _self._backgroundColorBK = _self.style.backgroundColor;
    _self.style.backgroundColor = color();
    _self.interval = setInterval(function() {
     _self.style.webkitTransform = "rotate("+_rotate+"deg)";
     _rotate += 30;
     if(_rotate > 360) {
      clearInterval(_self.interval);
      _self.onmouseover = null;
      _self.style.backgroundColor = _self._backgroundColorBK;
      move(_self);
      return;
     }
    }, 100);
   }
   return ele;
  }
  var loca = {
   x: 1000, 
   y: 0
  };
  var move = function(obj) {
   var _self = obj;
   var curX = parseInt(_self.style.left);
   var curY = parseInt(_self.style.top);
   var sX = loca.x - curX;
   var sY = loca.y - curY;
   var addX = sX/36;
   var addY = sY/36;
   var rotate = 0;
   var backgroundColorBK = _self.style.backgroundColor;
   _self.interval = setInterval(function() {
    _self.style.width = _self.style.height = (parseInt(_self.style.height) + 5) + "px";
    _self.style.webkitTransform = "rotate("+rotate+"deg)";
    curX += addX; 
    curY += addY;
    _self.style.left = curX + "px";
    _self.style.top = curY + "px";
    _self.style.backgroundColor = color();
    rotate += 10;
    if(rotate > 360) {
     _self.style.left = loca.x + "px";
     _self.style.top = loca.y + "px";
     clearInterval(_self.interval);
     _self.style.backgroundColor = backgroundColorBK;
     return;
    }
   }, 30);
  }
  var init = function() {
   var ul = $("canvas");
   for(var i=50; i<90; i++) {
    for(var j=50; j<90; j++) {
     var color = "rgb("+i+","+j+","+Math.round(Math.random()*255)+")";
     ul.appendChild(createLi({bgColor: color, left:(j-50)*16 ,top:(i-50)*16}));
    }
   }
  }
  var main = function() {
   init();
  }
  main();
 </script>
</html>

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
javascript调试说明
Jun 07 Javascript
javascript列表框操作函数集合汇总
Nov 28 Javascript
jquery easyui combox一些实用的小方法
Dec 25 Javascript
JavaScript中统计Textarea字数并提示还能输入的字符
Jun 10 Javascript
jQuery使用之标记元素属性用法实例
Jan 19 Javascript
Javascript 计算字符串在localStorage中所占字节数
Oct 21 Javascript
AngularJs基本特性解析(一)
Jul 21 Javascript
数据结构中的各种排序方法小结(JS实现)
Jul 23 Javascript
js判断浏览器是否支持严格模式的方法
Oct 04 Javascript
Jquery表单验证失败后不提交的解决方法
Oct 18 Javascript
Javascript Event(事件)的传播与冒泡
Jan 23 Javascript
vue复合组件实现注册表单功能
Nov 06 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
Jan 27 #Javascript
基于JavaScript实现瀑布流效果(循环渐近)
Jan 27 #Javascript
jQuery Easyui学习之datagrid 动态添加、移除editor
Jan 27 #Javascript
js实现简单排列组合的方法
Jan 27 #Javascript
jQuery插件开发精品教程让你的jQuery提升一个台阶
Jan 27 #Javascript
JavaScript+html5 canvas制作的圆中圆效果实例
Jan 27 #Javascript
jQuery ajax分页插件实例代码
Jan 27 #Javascript
You might like
在Yii框架中使用PHP模板引擎Twig的例子
2014/06/13 PHP
php实现图片按比例截取的方法
2017/02/06 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
2018/09/26 PHP
通过event对象的fromElement属性解决热区设置主实体的一个bug
2008/12/22 Javascript
javascript与CSS复习(《精通javascript》)
2010/06/29 Javascript
详解JS函数重载
2014/12/04 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
2015/01/29 Javascript
js字符串截取函数slice、substring和substr的比较
2016/05/17 Javascript
BootStrap select2 动态改变值的方法
2017/02/10 Javascript
JavaScript实现分页效果
2017/03/28 Javascript
React利用插件和不用插件实现双向绑定的方法详解
2017/07/03 Javascript
bootstrap是什么_动力节点Java学院整理
2017/07/14 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
2017/11/15 Javascript
JavaScript数据结构之双向链表和双向循环链表的实现
2017/11/28 Javascript
angular 实现的输入框数字千分位及保留几位小数点功能示例
2018/06/19 Javascript
浅谈Vue.js组件(二)
2019/04/09 Javascript
关于vue状态过渡transition不起作用的原因解决
2019/04/09 Javascript
vue-router两种模式区别及使用注意事项详解
2019/08/01 Javascript
解决layui弹框失效的问题
2019/09/09 Javascript
Django中对数据查询结果进行排序的方法
2015/07/17 Python
python编程开发之日期操作实例分析
2015/11/13 Python
Python中常用操作字符串的函数与方法总结
2016/02/04 Python
浅析AST抽象语法树及Python代码实现
2016/06/06 Python
利用pyinstaller或virtualenv将python程序打包详解
2017/03/22 Python
Python爬虫DNS解析缓存方法实例分析
2017/06/02 Python
使用python判断你是青少年还是老年人
2018/11/29 Python
pyqt5让图片自适应QLabel大小上以及移除已显示的图片方法
2019/06/21 Python
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
2016/12/14 HTML / CSS
中专毕业生自荐信范文
2013/11/28 职场文书
大二学生学习个人自我评价
2014/01/19 职场文书
秋季红领巾广播稿
2014/01/27 职场文书
客服部班长工作责任制
2014/02/25 职场文书
试用期自我评价怎么写
2015/03/10 职场文书
2015年销售内勤工作总结
2015/04/27 职场文书
2016继续教育研修日志
2015/11/13 职场文书
Python集合的基础操作
2021/11/01 Python