JS实现文字掉落效果的方法


Posted in Javascript onMay 06, 2015

本文实例讲述了JS实现文字掉落效果的方法。分享给大家供大家参考。具体实现方法如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="jquery-1.6.2.min.js" type="text/javascript"></script>
<style type="text/css">
.canvas{
width:500px;
height:500px;
position:relative;
}
</style>
</head>
<body>
<div>
<input type="button" onclick="javascript:falling.init();" value="GO" />
</div>
<div class="canvas" id="canvas"></div>
<script type="text/javascript">
/*
*坠落效果
*/
function Falling(){
 this.dict=["abcd","2222","sign","next","container","content","last","break","less","than","that","absolute","relative","my","index","html","java","c#","web","javascript","php","include","shit","bull","big","smart","call","apply","callee","caller","function"];
 this.canvas=$("#canvas");
 this.step=15;
 this.freq=10;
 this.height=500;
 this.width=500;
 this.si=null;
}
Falling.prototype={
 fallingAction:function(dom){
  var self=this;
  var freqs=[10,15,20];//每次下落的距离
  var disS=[];//记录所有dom的当前距离
  var disPerFreqS=[];//每个dom的
  var targetDis=500;
  var domCssTopS=[];//所有dom的top属性
  var successDom=[];//记录哪些dom已经结束运动
  var successCount=0;//有多少个dom已经结束
  var total=dom.length;
  var freqMarkLength=freqs.length;
  for(var i=0,j=dom.length;i<j;i++){
   domCssTopS[i]=dom[i].position().top;
   disS[i]=0;
   disPerFreqS[i]=freqs[parseInt(Math.random()*freqMarkLength)];
  }
  self.si=setInterval(function(){
   if(successCount>=total){
    clearInterval(self.si);
   }
   for(var i=0,j=dom.length;i<j;i++){
    if(typeof(successDom[i])!="undefined" && successDom[i]=="ok"){
     continue;
    }
    disS[i] += disPerFreqS[i];
    if(disS[i] >= targetDis){
     dom[i].css("top", targetDis+domCssTopS[i]);
     successDom[i]="ok";
     successCount++;;
    }else{
     dom[i].css("top", disS[i]+domCssTopS[i]);
    }
   }
  },self.freq);
 },
 init:function(){
  var self=this;
  self.canvas.html('');
  var dom=[];
  var l=0;
  var t=0;
  var tempDom=$("<div style='position;absolute;left:-100000;visibility:hidden'></div>").appendTo($("body"));
  for(var i=0,j=self.dict.length;i<j;i++){
   dom[i]=$("<span style='position:absolute'>"+self.dict[i]+"</span>").appendTo(tempDom);
   var domWidth=dom[i].width();
   var domHeight=dom[i].height();
   if(t<self.height){
    if(l<self.width){
     if(domWidth+l<=self.width){
      dom[i].css({"top":t,"left":l});
      self.canvas.append(dom[i]);
      l += dom[i].width();
     }else{
      if(domHeight+t<=self.height){
       t=t+domHeight;
       dom[i].css({"top":t,"left":0});
       self.canvas.append(dom[i]);
       l = dom[i].width();
      }else{
       break;//到极限了
      }
     }
    }else{
      if(domHeight+t<=self.height){
       t=t+domHeight;
       l=0;
       dom[i].css({"top":t,"left":l});
       self.canvas.append(dom[i]);
      }else{
       break;//到极限了
      }
    }
   }//else极限
  }
  /*
  for(var i=0,l=self.dict.length;i<l;i++){
   self.fallingAction(dom[i]);
  }
  */
  self.fallingAction(dom);
 }
}
var falling=new Falling();
falling.init();
</script>
</body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
jQuery中[attribute!=value]选择器用法实例
Dec 31 Javascript
JS判断元素是否在数组内的实现代码
Mar 30 Javascript
js实现的万能flv网页播放器代码
Apr 30 Javascript
jQuery插件fullPage.js实现全屏滚动效果
Dec 02 Javascript
原生JS轮播图插件
Feb 09 Javascript
Vuex之理解Mutations的用法实例
Apr 19 Javascript
Node.js利用js-xlsx处理Excel文件的方法详解
Jul 05 Javascript
JS尾递归的实现方法及代码优化技巧
Jan 19 Javascript
axios异步提交表单数据的几种方法
Aug 11 Javascript
JQuery常用简单动画操作方法回顾与总结
Dec 07 jQuery
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
Mar 06 Javascript
Object.keys() 和 Object.getOwnPropertyNames() 的区别详解
May 21 Javascript
DOM 高级编程
May 06 #Javascript
js获得当前系统日期时间的方法
May 06 #Javascript
js字符串操作方法实例分析
May 06 #Javascript
ajax+jQuery实现级联显示地址的方法
May 06 #Javascript
javascript十六进制及二进制转化的方法
May 06 #Javascript
js拆分字符串并将分割的数据放到数组中的方法
May 06 #Javascript
Juery解决tablesorter中文排序和字符范围的方法
May 06 #Javascript
You might like
盘点被央视点名过的日本动画电影 一部比一部强
2020/03/08 日漫
PHP 获取目录下的图片并随机显示的代码
2009/12/28 PHP
深入解析php之apc
2013/05/15 PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
2013/06/20 PHP
php日历制作代码分享
2014/01/20 PHP
PHP实现支持SSL连接的SMTP邮件发送类
2015/03/05 PHP
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
2011/04/27 Javascript
关于jquery.validate1.9.0前台验证的使用介绍
2013/04/26 Javascript
Javascript学习指南
2014/12/01 Javascript
JavaScript实现拖拽网页内元素的方法
2015/04/15 Javascript
引用jquery框架后出错的解决方法
2016/08/09 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
vue.js学习笔记之绑定style样式和class列表
2016/10/31 Javascript
iview实现select tree树形下拉框的示例代码
2018/12/21 Javascript
如何在Angular应用中创建包含组件方法示例
2019/03/23 Javascript
JS中的算法与数据结构之二叉查找树(Binary Sort Tree)实例详解
2019/08/16 Javascript
node.JS二进制操作模块buffer对象使用方法详解
2020/02/06 Javascript
微信分享invalid signature签名错误踩过的坑
2020/04/11 Javascript
python中的reduce内建函数使用方法指南
2014/08/31 Python
python通过ftplib登录到ftp服务器的方法
2015/05/08 Python
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
python3+PyQt5泛型委托详解
2018/04/24 Python
python利用微信公众号实现报警功能
2018/06/10 Python
对tensorflow 的模型保存和调用实例讲解
2018/07/28 Python
python pandas移动窗口函数rolling的用法
2020/02/29 Python
Python定时任务APScheduler安装及使用解析
2020/08/07 Python
MAC平台基于Python Appium环境搭建过程图解
2020/08/13 Python
15个Pythonic的代码示例(值得收藏)
2020/10/29 Python
python中pyqtgraph知识点总结
2021/01/26 Python
大学生个人推荐信范文
2013/11/25 职场文书
外贸业务员求职信范文
2013/12/12 职场文书
刑事辩护授权委托书格式
2014/10/13 职场文书
房地产销售主管岗位职责
2015/02/13 职场文书
数学教师求职信范文
2015/03/20 职场文书
离开雷锋的日子观后感
2015/06/09 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书