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 相关文章推荐
js checkbox(复选框) 使用集锦
Apr 28 Javascript
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
Dec 28 Javascript
jquery ready()的几种实现方法小结
Jun 18 Javascript
Extjs gridpanel 出现横向滚动条问题的解决方法
Jul 04 Javascript
中国地区三级联动下拉菜单效果分析
Nov 15 Javascript
JS操作图片(增,删,改) 例子
Apr 17 Javascript
js获取input长度并根据页面宽度设置其大小及居中对齐
Aug 22 Javascript
使用js画图之画切线
Jan 12 Javascript
jquery实现的点击翻书效果代码
Nov 04 Javascript
canvas绘制爱心的几种方法总结(推荐)
Oct 31 Javascript
深入了解Vue动态组件和异步组件
Jan 26 Vue.js
使用Canvas绘制一个游戏人物属性图
Mar 25 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
十天学会php之第六天
2006/10/09 PHP
php设计模式 DAO(数据访问对象模式)
2011/06/26 PHP
Yii2 RESTful中api的使用及开发实例详解
2016/07/06 PHP
验证坐标在某坐标区域内php代码
2016/10/08 PHP
php实现留言板功能(代码详解)
2017/03/28 PHP
php实现微信支付之企业付款
2018/05/30 PHP
js中数组排序sort方法的原理分析
2014/11/20 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
2015/04/17 Javascript
JS未跨域操作iframe里的DOM
2016/06/01 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
2017/03/02 Javascript
jQuery实现 上升、下降、删除、添加一行代码
2017/03/06 Javascript
深入理解AngularJS中的ng-bind-html指令
2017/03/27 Javascript
ajax+node+request爬取网络图片的实例(宅男福利)
2017/08/28 Javascript
使用jQuery给Table动态增加行、清空table的方法
2018/09/05 jQuery
BootStrap modal实现拖拽功能
2018/12/01 Javascript
vue中的计算属性和侦听属性
2020/11/06 Javascript
python双向链表实现实例代码
2013/11/21 Python
python实现类似ftp传输文件的网络程序示例
2014/04/08 Python
python中的随机函数小结
2018/01/27 Python
python try 异常处理(史上最全)
2019/03/07 Python
基于python3 的百度图片下载器的实现代码
2019/11/05 Python
Python&amp;&amp;GDAL实现NDVI的计算方式
2020/01/09 Python
Python实现EM算法实例代码
2020/10/04 Python
Python join()函数原理及使用方法
2020/11/14 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
美国美妆网站:B-Glowing
2016/10/12 全球购物
Shopee菲律宾:在线购买和出售
2019/11/25 全球购物
英国第一职业高尔夫商店:Clickgolf.co.uk
2020/11/18 全球购物
大一自我鉴定范文
2013/10/04 职场文书
物业管理员岗位职责范文
2013/11/25 职场文书
师德师风演讲稿
2014/05/05 职场文书
学校党支部公开承诺书
2015/04/30 职场文书
幼儿园校车安全责任书
2015/05/08 职场文书
青涩记忆观后感
2015/06/18 职场文书
告知书格式
2015/07/01 职场文书
你真的了解redis为什么要提供pipeline功能
2021/06/22 Redis