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 Validation插件防止重复提交表单的解决方法
Mar 05 Javascript
Jquery Select操作方法集合脚本之家特别版
May 17 Javascript
基于jquery的一个浮动框(扩展性比较好 )
Aug 27 Javascript
ParseInt函数参数设置介绍
Jan 02 Javascript
Jquery 全选反选实例代码
Nov 19 Javascript
简单解析JavaScript中的__proto__属性
May 10 Javascript
javascript兼容性(实例讲解)
Aug 15 Javascript
Vue中的混入的使用(vue mixins)
Jun 01 Javascript
vue删除html内容的标签样式实例
Sep 13 Javascript
在 Vue 应用中使用 Netlify 表单功能的方法详解
Jun 03 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
Aug 28 Javascript
Vue绑定用户接口实现代码示例
Nov 04 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关联数组的10个操作技巧
2013/01/21 PHP
浅析php中抽象类和接口的概念以及区别
2013/06/27 PHP
php实现ip白名单黑名单功能
2015/03/12 PHP
php限制上传文件类型并保存上传文件的方法
2015/03/13 PHP
PHP使用mkdir创建多级目录的方法
2015/12/22 PHP
php微信公众平台示例代码分析(二)
2016/12/06 PHP
PHP+JQUERY操作JSON实例
2017/03/23 PHP
利用javascript查看html源文件
2006/11/08 Javascript
基于jQuery实现的百度导航li拖放排列效果,即时更新数据库
2012/07/31 Javascript
jQuery文本框(input textare)事件绑定方法教程
2013/04/24 Javascript
json格式数据的添加,删除及排序方法
2016/01/21 Javascript
Bootstrap禁用响应式布局的实现方法
2017/03/09 Javascript
js从输入框读取内容,比较两个数字的大小方法
2017/03/13 Javascript
利用vue.js插入dom节点的方法
2017/03/15 Javascript
AngularJS实现注册表单验证功能
2017/10/16 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
2019/05/13 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
2019/07/23 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
2020/04/22 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
JavaScript仿京东轮播图效果
2021/02/25 Javascript
浅谈Python的Django框架中的缓存控制
2015/07/24 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
python正则表达式匹配[]中间为任意字符的实例
2018/12/25 Python
python实现字符串加密 生成唯一固定长度字符串
2019/03/22 Python
PyTorch搭建一维线性回归模型(二)
2019/05/22 Python
python中几种自动微分库解析
2019/08/29 Python
Python ellipsis 的用法详解
2020/11/20 Python
python try...finally...的实现方法
2020/11/25 Python
Oakley官网:运动太阳镜、雪镜和服装
2016/09/30 全球购物
Chicco婴儿用品美国官网:汽车座椅、婴儿推车、高脚椅等
2018/11/05 全球购物
一套带答案的C++笔试题
2014/01/10 面试题
《大作家的小老师》教学反思
2014/04/16 职场文书
安全教育月活动总结
2014/05/05 职场文书
Nginx Rewrite使用场景及配置方法解析
2021/04/01 Servers
Redis三种集群模式详解
2021/10/05 Redis
zabbix如何添加监控主机和自定义监控项
2022/08/14 Servers