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 在线压缩和格式化收藏
Jan 16 Javascript
小试JQuery的AutoComplete插件
May 04 Javascript
Extjs 继承Ext.data.Store不起作用原因分析及解决
Apr 15 Javascript
js获取某元素的class里面的css属性值代码
Jan 16 Javascript
jQuery实现的AJAX简单弹出层效果代码
Nov 26 Javascript
jQuery点击输入框显示验证码图片
May 19 Javascript
Javascript获取图片原始宽度和高度的方法详解
Sep 20 Javascript
深入学习Bootstrap表单
Dec 13 Javascript
js图片放大镜效果实现方法详解
Oct 28 Javascript
JS触摸事件、手势事件详解
May 04 Javascript
ionic grid(栅格)九宫格制作详解
Jun 30 Javascript
vue 导航内容设置选中状态样式的例子
Nov 01 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面试题集锦
2012/03/08 PHP
php提高网站效率的技巧
2015/09/29 PHP
php微信开发之带参数二维码的使用
2016/08/03 PHP
Laravel5.5以下版本中如何自定义日志行为详解
2018/08/01 PHP
PHP+Oracle本地开发环境搭建方法详解
2019/04/01 PHP
本地对象Array的原型扩展实现代码
2010/12/04 Javascript
6款经典实用的jQuery小插件及源码(对话框/提示工具等等)
2013/02/04 Javascript
jquery通过visible来判断标签是否显示或隐藏
2014/05/08 Javascript
javascript学习笔记(四)function函数部分
2014/09/30 Javascript
jQuery中DOM树操作之复制元素的方法
2015/01/23 Javascript
Javascript核心读书有感之词法结构
2015/02/01 Javascript
JavaScript实现的简单拖拽效果
2015/06/01 Javascript
js实现圆盘记速表
2015/08/03 Javascript
javascript实现数字倒计时特效
2016/03/30 Javascript
JavaScript箭头函数_动力节点Java学院整理
2017/06/28 Javascript
checkbox在vue中的用法小结
2018/11/13 Javascript
ES6中let、const的区别及变量的解构赋值操作方法实例分析
2019/10/15 Javascript
nodejs各种姿势断点调试的方法
2020/06/18 NodeJs
Python实现二分查找算法实例
2015/05/26 Python
怎么使用pipenv管理你的python项目
2018/03/12 Python
解决django前后端分离csrf验证的问题
2019/02/03 Python
python读文件的步骤
2019/10/08 Python
利用CSS3实现折角效果实例源码
2016/09/28 HTML / CSS
异常和异常类的概念
2014/09/12 面试题
党的群众路线教育实践活动心得体会900字
2014/03/07 职场文书
大学军训感言300字
2014/03/09 职场文书
制药工程专业职业生涯规划范文
2014/03/10 职场文书
百货商场楼层班组长竞聘书
2014/03/31 职场文书
领导班子民主生活会整改措施(工商局)
2014/09/21 职场文书
学生实习证明范文
2014/09/28 职场文书
2014年项目工作总结
2014/11/24 职场文书
2015年学生会部门工作总结
2015/04/21 职场文书
2016北大自主招生自荐信模板
2016/01/28 职场文书
MySQL 如何设计统计数据表
2021/06/15 MySQL
FP-growth算法发现频繁项集——发现频繁项集
2021/06/24 Python
Windows11 Insider Preview Build 25206今日发布 更新内容汇总
2022/09/23 数码科技