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 相关文章推荐
用JavaScript实现UrlEncode和UrlDecode的脚本代码
Jul 23 Javascript
jQuery validate 中文API 附validate.js中文api手册
Jul 31 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
May 07 Javascript
原生javascript模仿win8等待提示圆圈进度条
Apr 24 Javascript
整理Javascript基础入门学习笔记
Nov 29 Javascript
基于jquery插件实现拖拽删除图片功能
Aug 27 Javascript
js Dom实现换肤效果
Oct 21 Javascript
脚手架vue-cli工程webpack的作用和特点
Sep 29 Javascript
详解JavaScript对数组操作(添加/删除/截取/排序/倒序)
Apr 28 Javascript
vue父组件触发事件改变子组件的值的方法实例详解
May 07 Javascript
JS阻止事件冒泡的方法详解
Aug 26 Javascript
JS实现使用POST方式发送请求
Aug 30 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
laravel 解决Eloquent ORM的save方法无法插入数据的问题
2019/10/21 PHP
基于php解决json_encode中文UNICODE转码问题
2020/11/10 PHP
用js 让图片在 div或dl里 居中,底部对齐
2008/01/21 Javascript
NodeJS框架Express的模板视图机制分析
2011/07/19 NodeJs
javascript nextSibling 与 getNextElement(node) 使用介绍
2011/10/13 Javascript
Ext JS 4官方文档之三 -- 类体系概述与实践
2012/12/16 Javascript
javascript 星级评分效果(手写)
2012/12/24 Javascript
图片上传判断及预览脚本的效果实例
2013/08/07 Javascript
获取3个数组不重复的值的具体实现
2013/12/30 Javascript
页面装载js及性能分析方法介绍
2014/03/21 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
15个常用的jquery代码片段
2015/12/19 Javascript
Node.js服务器环境下使用Mock.js拦截AJAX请求的教程
2016/05/23 Javascript
第五篇Bootstrap 排版
2016/06/21 Javascript
JS仿QQ好友列表展开、收缩功能(第二篇)
2017/07/07 Javascript
React props和state属性的具体使用方法
2018/04/12 Javascript
vue实现城市列表选择功能
2018/07/16 Javascript
Vue-Router的使用方法
2018/09/05 Javascript
vue服务端渲染添加缓存的方法
2018/09/18 Javascript
在Create React App中启用Sass和Less的方法示例
2019/01/16 Javascript
jquery将json转为数据字典的实例代码
2019/10/11 jQuery
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
2020/09/02 Javascript
[06:53]2018DOTA2国际邀请赛寻真——勇于创新的Vici Gaming
2018/08/14 DOTA
python使用nntp读取新闻组内容的方法
2015/05/08 Python
python3实现字符串的全排列的方法(无重复字符)
2018/07/07 Python
Python设计模式之桥接模式原理与用法实例分析
2019/01/10 Python
Python面向对象之类的封装操作示例
2019/06/08 Python
基于 Django 的手机管理系统实现过程详解
2019/08/16 Python
Python基于模块Paramiko实现SSHv2协议
2020/04/28 Python
博士生入学考试推荐信
2013/11/17 职场文书
酒店销售经理岗位职责
2014/01/31 职场文书
《在家里》教后反思
2014/03/01 职场文书
商务英语广告词大全
2014/03/18 职场文书
工作态度不好检讨书
2015/05/06 职场文书
花木兰观后感
2015/06/10 职场文书