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+XMLHttpRequest+asp.net无刷新读取数据库数据
Aug 09 Javascript
JavaScript 原型继承之构造函数继承
Aug 26 Javascript
Jquery each方法跳出循环,并获取返回值(实例讲解)
Dec 12 Javascript
PHP使用方法重载实现动态创建属性的get和set方法
Nov 17 Javascript
jQuery中innerWidth()方法用法实例
Jan 19 Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
Mar 04 Javascript
JS组件Bootstrap dropdown组件扩展hover事件
Apr 17 Javascript
浅谈js继承的实现及公有、私有、静态方法的书写
Oct 28 Javascript
Bootstrap基本组件学习笔记之进度条(15)
Dec 08 Javascript
vue 监听屏幕高度的实例
Sep 05 Javascript
vue项目中使用fetch的实现方法
Apr 25 Javascript
layer弹出层扩展主题的方法
Sep 11 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+java实现自动新闻滚动窗口
2006/10/09 PHP
PHP中for循环语句的几种变型
2006/11/26 PHP
php出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
php mysql Errcode: 28 终极解决方法
2009/07/01 PHP
php下安装配置fckeditor编辑器的方法
2011/03/02 PHP
php 获取本地IP代码
2013/06/23 PHP
php 三元运算符实例详细介绍
2016/12/15 PHP
file模式访问网页时iframe高度自适应解决方案
2013/01/16 Javascript
jQuery弹出框代码封装DialogHelper
2015/01/30 Javascript
node.js中module.exports与exports用法上的区别
2016/09/02 Javascript
动态JavaScript所造成一些你不知道的危害
2016/09/25 Javascript
javascript判断回文数详解及实现代码
2017/02/03 Javascript
Vue项目使用CDN优化首屏加载问题
2018/04/01 Javascript
React router动态加载组件之适配器模式的应用详解
2018/09/12 Javascript
node.js环境搭建图文详解
2018/09/19 Javascript
JavaScript 性能提升之路(推荐)
2019/04/10 Javascript
js图数据结构处理 迪杰斯特拉算法代码实例
2019/09/11 Javascript
python基础教程之实现石头剪刀布游戏示例
2014/02/11 Python
Python基于scrapy采集数据时使用代理服务器的方法
2015/04/16 Python
python 网络爬虫初级实现代码
2016/02/27 Python
Python可变参数*args和**kwargs用法实例小结
2018/04/27 Python
pandas 数据实现行间计算的方法
2018/06/08 Python
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
基于python3实现socket文件传输和校验
2018/07/28 Python
Django实现文件上传下载功能
2019/10/06 Python
解决keras模型保存h5文件提示无此目录问题
2020/07/01 Python
基于PyInstaller各参数的含义说明
2021/03/04 Python
HTML5 CSS3给网站设计带来出色效果
2009/07/16 HTML / CSS
仿CSDN Blog返回页面顶部功能实现原理及代码
2013/06/30 HTML / CSS
拉夫劳伦爱尔兰官方网站:Ralph Lauren爱尔兰
2020/04/10 全球购物
什么是测试驱动开发(TDD)
2012/02/15 面试题
感恩节红领巾广播稿
2014/02/11 职场文书
军训教官感言
2014/03/02 职场文书
我爱家乡演讲稿
2014/09/12 职场文书
自荐信范文
2019/05/20 职场文书
Python数据分析之绘图和可视化详解
2021/06/02 Python