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 相关文章推荐
JS仿flash上传头像效果实现代码
Jul 18 Javascript
多个js与css文件的合并方法详细说明
Dec 26 Javascript
JS 有趣的eval优化输入验证实例代码
Sep 22 Javascript
js获取客户端外网ip的简单实例
Nov 21 Javascript
深入理解JavaScript系列(41):设计模式之模板方法详解
Mar 04 Javascript
jQuery实现宽屏图片轮播实例教程
Nov 24 Javascript
AngularJS的ng Http Request与response格式转换方法
Nov 07 Javascript
JS实现超简单的汉字转拼音功能示例
Dec 22 Javascript
Vue.js弹出模态框组件开发的示例代码
Jul 26 Javascript
浅谈Vue网络请求之interceptors实际应用
Feb 28 Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
Mar 17 Javascript
vue动态设置路由权限的主要思路
Jan 13 Vue.js
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
实现在同一方法中获取当前方法中新赋值的session值解决方法
2014/06/26 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
2016/03/14 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
javascript在网页中实现读取剪贴板粘贴截图功能
2014/06/07 Javascript
JS实现的另类手风琴效果网页内容切换代码
2015/09/08 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
JavaScript 经典实例日常收集整理(常用经典)
2016/03/30 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
Bootstrap实现弹性搜索框
2016/07/11 Javascript
AngularJS 中文API参考手册
2016/07/28 Javascript
BootStrap Fileinput的使用教程
2016/12/30 Javascript
原生js二级联动效果
2017/06/20 Javascript
微信小程序收藏功能的实现代码
2018/06/12 Javascript
json字符串传到前台input的方法
2018/08/06 Javascript
通过vue手动封装on、emit、off的代码详解
2019/05/29 Javascript
nodeJs项目在阿里云的简单部署
2020/11/27 NodeJs
[03:39]2015国际邀请赛主赛事首日精彩回顾
2015/08/05 DOTA
Python类的基础入门知识
2008/11/24 Python
Python中为什么要用self探讨
2015/04/14 Python
浅析PHP与Python进行数据交互
2018/05/15 Python
如何优雅地处理Django中的favicon.ico图标详解
2018/07/05 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
2019/02/25 Python
Django-Model数据库操作(增删改查、连表结构)详解
2019/07/17 Python
Python时间差中seconds和total_seconds的区别详解
2019/12/26 Python
如何定义TensorFlow输入节点
2020/01/23 Python
python logging.info在终端没输出的解决
2020/05/12 Python
英国领先的杂志订阅网站:Magazine.co.uk
2018/01/25 全球购物
Nike澳大利亚官网:Nike.com (AU)
2019/06/03 全球购物
Java和Javasciprt的区别
2012/09/02 面试题
小车司机岗位职责
2013/11/25 职场文书
新郎答谢词
2015/01/04 职场文书
2015年客服工作总结范文
2015/04/02 职场文书
农业项目合作意向书
2015/05/08 职场文书
企业投资意向书
2015/05/09 职场文书
党员身份证明材料
2015/06/19 职场文书
2019年手机市场的调研报告2篇
2019/10/10 职场文书