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 相关文章推荐
node.js chat程序如何实现Ajax long-polling长链接刷新模式
Mar 13 Javascript
中文字符串截取的js函数代码
Apr 17 Javascript
常用的JavaScript WEB操作方法分享
Feb 28 Javascript
jquery实现倒计时功能
Dec 28 Javascript
AngularJS模块学习之Anchor Scroll
Jan 19 Javascript
js实现添加可信站点、修改activex安全设置,禁用弹出窗口阻止程序
Aug 17 Javascript
vue双向数据绑定知识点总结
Apr 18 Javascript
vue中的适配px2rem示例代码
Nov 19 Javascript
vue+element实现表格新增、编辑、删除功能
May 28 Javascript
在Vue 中实现循环渲染多个相同echarts图表
Jul 20 Javascript
JS+css3实现幻灯片轮播图
Aug 14 Javascript
微信小程序实现简单购物车功能
Dec 30 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 mongodb扩展时 需要注意的事项
2013/06/18 PHP
php实现留言板功能(会话控制)
2017/05/23 PHP
laravel返回统一格式错误码问题
2019/11/04 PHP
dess中一个简单的多路委托的实现
2010/07/20 Javascript
教您去掉ie网页加载进度条的方法
2010/12/09 Javascript
javascript中删除指定数组中指定的元素的代码
2011/02/12 Javascript
jQuery简单实现banner图片切换
2014/01/02 Javascript
jQuery+ajax实现鼠标单击修改内容的方法
2014/06/27 Javascript
简单分析javascript面向对象与原型
2015/05/21 Javascript
原生JavaScript实现瀑布流布局
2020/06/28 Javascript
JavaScript模拟数组合并concat
2016/03/06 Javascript
JavaScript知识点总结(六)之JavaScript判断变量数据类型
2016/05/31 Javascript
新手学习前端之js模仿淘宝主页网站
2016/10/31 Javascript
Node.js 实现简单小说爬虫实例
2016/11/18 Javascript
Bootstrap源码解读表单(2)
2016/12/22 Javascript
JS判断鼠标进入容器的方向与window.open新窗口被拦截的问题
2016/12/23 Javascript
20个最常见的jQuery面试问题及答案
2018/05/23 jQuery
jQuery 筛选器简单操作示例
2019/10/02 jQuery
详解JavaScript作用域、作用域链和闭包的用法
2020/09/03 Javascript
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
Python实现读取目录所有文件的文件名并保存到txt文件代码
2014/11/22 Python
Python实现Sqlite将字段当做索引进行查询的方法
2016/07/21 Python
Python批量合并有合并单元格的Excel文件详解
2018/04/05 Python
详解如何减少python内存的消耗
2019/08/09 Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
2021/01/05 Python
CSS3实现菜单悬停效果
2020/11/17 HTML / CSS
技能竞赛活动方案
2014/02/21 职场文书
村抢险救灾方案
2014/05/09 职场文书
村创先争优活动总结
2014/08/28 职场文书
2014应届本科生自我评价
2014/09/13 职场文书
1000字打架检讨书
2014/11/03 职场文书
2015年老干部工作总结
2015/04/23 职场文书
入党介绍人意见2015
2015/06/01 职场文书
导游词之四川武侯祠
2019/10/21 职场文书
Pandas 数据编码的十种方法
2022/04/20 Python
2022年显卡天梯图(6月更新)
2022/06/17 数码科技