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根据纬度经度查看地图处理程序
May 08 Javascript
利用cookie记住背景颜色示例代码
Nov 04 Javascript
得到form下的所有的input的js代码
Nov 07 Javascript
JS两种定义方式的区别、内部原理
Nov 21 Javascript
关闭页面window.location事件未执行的原因及解决方法
Sep 01 Javascript
node.js中的path.resolve方法使用说明
Dec 08 Javascript
浅谈javascript函数式编程
Sep 06 Javascript
node.js插件nodeclipse安装图文教程
Oct 19 Javascript
jQuery动态移除和添加背景图片的方法详解
Mar 07 Javascript
js 计数排序的实现示例(升级版)
Jan 12 Javascript
JS实现进度条动态加载特效
Mar 25 Javascript
解决Antd Table表头加Icon和气泡提示的坑
Nov 17 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
基于文本的访客签到簿
2006/10/09 PHP
PHP初学入门
2006/11/19 PHP
php学习之流程控制实现代码
2011/06/09 PHP
PHP简洁函数小结
2011/08/12 PHP
thinkphp实现面包屑导航(当前位置)例子分享
2014/05/10 PHP
thinkPHP中create方法与令牌验证实例浅析
2015/12/08 PHP
php array_slice 取出数组中的一段序列实例
2016/11/04 PHP
javascript 自动转到命名锚记
2009/01/10 Javascript
JS上传前预览图片实例
2013/03/25 Javascript
ie中js创建checkbox默认选中问题探讨
2013/10/21 Javascript
jquery实现邮箱自动补全功能示例分享
2014/02/17 Javascript
JavaScript中的公有、私有、特权和静态成员用法分析
2014/11/20 Javascript
java必学必会之static关键字
2015/12/03 Javascript
JavaScript模拟push
2016/03/06 Javascript
JavaScript省市区三级联动菜单效果
2016/09/21 Javascript
Bootstrap 表单验证formValidation 实现表单动态验证功能
2017/05/17 Javascript
w3c编程挑战_初级脚本算法实战篇
2017/06/23 Javascript
HTML5开发Kinect体感游戏的实例应用
2017/09/18 Javascript
基于jQuery实现定位导航位置效果
2017/11/15 jQuery
webpack多页面开发实践
2017/12/18 Javascript
JS实现的小火箭发射动画效果示例
2018/12/08 Javascript
小程序按钮避免多次调用接口和点击方案实现(不用showLoading)
2020/04/15 Javascript
[34:39]Secret vs VG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python多层嵌套list的递归处理方法(推荐)
2016/06/08 Python
Python如何发布程序的详细教程
2018/10/09 Python
Pandas时间序列:重采样及频率转换方式
2019/12/26 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
2020/07/02 Python
盛大二次面试题
2016/11/18 面试题
文职个人求职信范文
2013/09/23 职场文书
学校介绍信范文
2014/01/14 职场文书
助人为乐表扬信范文
2014/01/14 职场文书
2014年党课学习材料
2014/05/11 职场文书
材料员岗位职责
2015/02/10 职场文书
2019旅游导游工作总结
2019/06/27 职场文书
win10蓝屏0xc0000001安全模式进不了怎么办?win10出现0xc0000001的解决方法
2022/08/05 数码科技
keepalived + nginx 实现高可用方案
2022/12/24 Servers