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 相关文章推荐
超级退弹代码
Jul 07 Javascript
腾讯与新浪的通过IP地址获取当前地理位置(省份)的接口
Jul 26 Javascript
JavaScript简单实现鼠标拖动选择功能
Mar 06 Javascript
一个Action如何调用两个不同的方法
May 22 Javascript
jQuery学习笔记之jQuery构建函数的7种方法
Jun 03 Javascript
JS实现网页滚动条感应鼠标变色的方法
Feb 26 Javascript
浅谈Vue.js应用的四种AJAX请求数据模式
Aug 30 Javascript
JS获取当前地理位置的方法
Oct 25 Javascript
在nginx上部署vue项目(history模式)的方法
Dec 28 Javascript
手把手带你搭建一个node cli的方法示例
Aug 07 Javascript
Vue将props值实时传递 并可修改的操作
Aug 09 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
Dec 11 Vue.js
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中批量替换文件名的实现代码
2011/07/20 PHP
PHP 处理TXT文件(打开/关闭/检查/读取)
2013/05/13 PHP
php中获取主机名、协议及IP地址的方法
2014/11/18 PHP
Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
2016/03/02 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
2016/10/25 PHP
THINKPHP在添加数据的时候获取主键id的值方法
2017/04/03 PHP
JavaScript去掉空格的方法集合
2010/12/28 Javascript
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
2013/04/24 Javascript
jqTransform美化表单
2015/10/10 Javascript
跟我学习javascript的prototype使用注意事项
2015/11/17 Javascript
15个常用的jquery代码片段
2015/12/19 Javascript
详解Node.js:events事件模块
2016/11/24 Javascript
JS编写函数实现对身份证号码最后一位的验证功能
2016/12/29 Javascript
使用Node.js实现简易MVC框架的方法
2017/08/07 Javascript
小程序简单两栏瀑布流效果的实现
2019/12/18 Javascript
Node.js API详解之 querystring用法实例分析
2020/04/29 Javascript
分析python服务器拒绝服务攻击代码
2014/01/16 Python
Python使用设计模式中的责任链模式与迭代器模式的示例
2016/03/02 Python
python进阶_浅谈面向对象进阶
2017/08/17 Python
基于Python实现定时自动给微信好友发送天气预报
2018/10/25 Python
python绘制简单彩虹图
2018/11/19 Python
python实现列表中最大最小值输出的示例
2019/07/09 Python
python实现根据文件格式分类
2019/10/31 Python
Python变量及数据类型用法原理汇总
2020/08/06 Python
会计岗位职责
2013/11/08 职场文书
会计职业生涯规划书
2014/01/13 职场文书
《李广射虎》教学反思
2014/04/27 职场文书
车辆委托书范本
2014/10/05 职场文书
领导班子三严三实心得体会
2014/10/13 职场文书
2014年远程教育工作总结
2014/12/09 职场文书
毕业设计致谢词
2015/05/14 职场文书
门卫管理制度范本
2015/08/05 职场文书
2016年幼儿园教师师德承诺书
2016/03/25 职场文书
导游词之上海杜莎夫人蜡像馆
2019/11/22 职场文书
对Keras自带Loss Function的深入研究
2021/05/25 Python
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python