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 相关文章推荐
HTML中不支持静态Expando的元素的问题
Mar 08 Javascript
不错的JS中变量相关的细节分析
Aug 13 Javascript
js自执行函数的几种不同写法的比较
Aug 16 Javascript
js动态为代码着色显示行号
May 29 Javascript
javascript函数定义的几种区别小结
Jan 06 Javascript
BootStrap3学习笔记(一)之网格系统
May 20 Javascript
jquery实现自定义图片裁剪功能【推荐】
Mar 08 Javascript
基于vue.js快速搭建图书管理平台
Oct 29 Javascript
JS加密插件CryptoJS实现的Base64加密示例
Aug 16 Javascript
解决vue 打包发布去#和页面空白的问题
Sep 04 Javascript
理理Vue细节(推荐)
Apr 16 Javascript
Vue运用transition实现过渡动画
May 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
php 数组的合并、拆分、区别取值函数集
2010/02/15 PHP
PHP内核探索:变量概述
2014/01/30 PHP
yii用户注册表单验证实例
2015/12/26 PHP
PHP基于回溯算法解决n皇后问题的方法示例
2017/11/07 PHP
PHP的mysqli_select_db()函数讲解
2019/01/23 PHP
javascript 处理HTML元素必须避免使用的一种方法
2009/07/30 Javascript
jquery 如何动态添加、删除class样式方法介绍
2012/11/07 Javascript
jQuery+css+html实现页面遮罩弹出框
2013/03/21 Javascript
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
2013/05/13 Javascript
fmt:formatDate的输出格式详解
2014/01/09 Javascript
JS使用for循环遍历Table的所有单元格内容
2014/08/21 Javascript
js文件包含的几种方式介绍
2014/09/28 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
D3.js实现折线图的方法详解
2016/09/21 Javascript
扩展Bootstrap Tooltip插件使其可交互的方法
2016/11/07 Javascript
nodejs学习笔记之路由
2017/03/27 NodeJs
强大的JavaScript响应式图表Chartist.js的使用
2017/09/13 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
2018/05/17 Javascript
[00:50]2014DOTA2国际邀请赛 NEWBEE战队回顾
2014/08/01 DOTA
[42:23]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第二场 12.10
2020/12/13 DOTA
浅谈Python 字符串格式化输出(format/printf)
2016/07/21 Python
Python的bit_length函数来二进制的位数方法
2019/08/27 Python
调用其他python脚本文件里面的类和方法过程解析
2019/11/15 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
2020/02/26 Python
python爬虫搭配起Bilibili唧唧的流程分析
2020/12/01 Python
html5 canvas实现给图片添加平铺水印
2019/08/20 HTML / CSS
意大利专业化妆品品牌:KIKO MILANO
2017/02/01 全球购物
大专生自我鉴定范文
2013/10/01 职场文书
实用求职信范文分享
2013/12/25 职场文书
酒店保洁员岗位职责
2015/02/26 职场文书
员工手册编写范本
2015/05/14 职场文书
学历证明范文
2015/06/16 职场文书
导游词之山西关帝庙
2019/11/01 职场文书
Django实现WebSocket在线聊天室功能(channels库)
2021/09/25 Python
Java数据结构之堆(优先队列)
2022/05/20 Java/Android