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框架的AJAX实例代码
Nov 03 Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
Aug 01 Javascript
JavaScript判断访问的来源是手机还是电脑,用的哪种浏览器
Dec 12 Javascript
jquery获取URL中参数解决中文乱码问题的两种方法
Dec 18 Javascript
javascript实时获取鼠标坐标值并显示的方法
Apr 30 Javascript
node实现简单的反向代理服务器
Jul 26 Javascript
create-react-app构建项目慢的解决方法
Mar 14 Javascript
详解Vue 换肤方案验证
Aug 28 Javascript
修改vue源码实现动态路由缓存的方法
Jan 21 Javascript
jQuery实现小火箭返回顶部特效
Feb 03 jQuery
使用Vue 自定义文件选择器组件的实例代码
Mar 04 Javascript
解决VantUI popup 弹窗不弹出或无蒙层的问题
Nov 03 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中call_user_func_array的作用
2013/06/07 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
2014/04/01 PHP
ThinkPHP3.2.2的插件控制器功能
2015/03/05 PHP
php中JSON的使用方法
2015/04/30 PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
2016/11/07 PHP
js select常用操作控制代码
2010/03/16 Javascript
javascript循环变量注册dom事件 之强大的闭包
2010/09/08 Javascript
javascript屏蔽右键代码
2014/05/15 Javascript
js实现简单的碰壁反弹效果
2016/08/30 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
2016/10/29 Javascript
js 点击a标签 获取a的自定义属性方法
2016/11/21 Javascript
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
2017/05/08 jQuery
jQuery开源组件BootstrapValidator使用详解
2017/06/29 jQuery
js获取css的各种样式并且设置他们的方法
2017/08/22 Javascript
Vue2 模板template的四种写法总结
2018/02/23 Javascript
vue webpack重写cookie路径的方法
2019/07/10 Javascript
关于Vue中axios的封装实例详解
2019/10/20 Javascript
js、jquery实现列表模糊搜索功能过程解析
2020/03/27 jQuery
Python 字典dict使用介绍
2014/11/30 Python
python采集百度百科的方法
2015/06/05 Python
Python简单生成随机姓名的方法示例
2017/12/27 Python
python调用OpenCV实现人脸识别功能
2018/05/25 Python
Python os.rename() 重命名目录和文件的示例
2018/10/25 Python
Python使用ctypes调用C/C++的方法
2019/01/29 Python
Django框架视图介绍与使用详解
2019/07/18 Python
python 使用cx-freeze打包程序的实现
2020/03/14 Python
施工安全标语
2014/06/07 职场文书
个人授权委托书格式
2014/08/30 职场文书
大学生推广普通话演讲稿
2014/09/21 职场文书
“向国旗敬礼”活动策划方案(4篇)
2014/09/27 职场文书
2015年党员承诺书
2015/01/21 职场文书
新教师个人工作总结
2015/02/06 职场文书
2015仓库保管员年终工作总结
2015/05/13 职场文书
个人业务学习心得体会
2016/01/25 职场文书
Go 在 MongoDB 中常用查询与修改的操作
2021/05/07 Golang
关于k8s环境部署mysql主从的问题
2022/03/13 MySQL