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 相关文章推荐
最新优化收藏到网摘代码(digg,diigo)
Feb 07 Javascript
js下用gb2312编码解码实现方法
Dec 31 Javascript
Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐
Jan 27 Javascript
jquery实现删除一个元素后面的所有元素功能
Dec 21 Javascript
原生js获取元素样式的简单方法
Aug 06 Javascript
bootstrap基础知识学习笔记
Nov 02 Javascript
JS表单提交验证、input(type=number) 去三角 刷新验证码
Jun 21 Javascript
基于angular6.0实现的一个组件懒加载功能示例
Apr 12 Javascript
微信小程序实现动态显示和隐藏某个控件功能示例
Dec 14 Javascript
Vue组件通信的几种实现方法
Apr 25 Javascript
javascript实现的时间格式加8小时功能示例
Jun 13 Javascript
详解vue beforeRouteEnter 异步获取数据给实例问题
Aug 09 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
Syphon 使用方法
2021/03/03 冲泡冲煮
php_xmlhttp 乱码问题解决方法
2009/08/07 PHP
php获取文章上一页与下一页的方法
2014/12/01 PHP
php删除文本文件中重复行的方法
2015/04/28 PHP
YII Framework框架教程之日志用法详解
2016/03/14 PHP
PHP正则获取页面所有图片地址
2016/03/23 PHP
php实现按天数、星期、月份查询的搜索框
2016/05/02 PHP
php自动加载代码实例详解
2021/02/26 PHP
namespace.js Javascript的命名空间库
2011/10/11 Javascript
清除div下面的所有标签的方法
2014/02/17 Javascript
Node.js中使用Buffer编码、解码二进制数据详解
2014/08/16 Javascript
JavaScript中的Math.LN2属性用法详解
2015/06/12 Javascript
学习javascript面向对象 理解javascript原型和原型链
2016/01/04 Javascript
Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案
2016/09/15 Javascript
Jquery Easyui自定义下拉框组件使用详解(21)
2020/12/31 Javascript
nuxt框架中路由鉴权之Koa和Session的用法
2018/05/09 Javascript
JavaScript实现的级联算法示例【省市二级联动功能】
2018/12/25 Javascript
JavaScript常见鼠标事件与用法分析
2019/01/03 Javascript
JavaScript 实现同时选取多个时间段的方法
2019/10/17 Javascript
vue element table中自定义一些input的验证操作
2020/07/18 Javascript
python随机生成指定长度密码的方法
2015/04/04 Python
python脚本当作Linux中的服务启动实现方法
2019/06/28 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
python numpy 反转 reverse示例
2019/12/04 Python
Win下PyInstaller 安装和使用教程
2019/12/25 Python
python实现简单井字棋游戏
2020/03/04 Python
基于Python的接口自动化读写excel文件的方法
2021/01/15 Python
美国女性服饰销售网站:Nasty Gal(坏女孩)
2016/07/26 全球购物
估算杭州有多少软件工程师
2015/08/11 面试题
高三自我鉴定怎么写
2013/10/19 职场文书
合伙协议书范本
2014/04/21 职场文书
杭州黄龙洞导游词
2015/02/10 职场文书
公司员工体检通知
2015/04/21 职场文书
2016年“5.12”国际护士节活动总结
2016/04/06 职场文书
2019已经过半,你知道年中工作总结该怎么写吗?
2019/07/03 职场文书
springboot如何初始化执行sql语句
2021/06/22 Java/Android