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的input输入框下拉提示层(自动邮箱后缀名)
Jun 14 Javascript
JavaScript 实现类的多种方法实例
May 01 Javascript
jQuery 写的简单打字游戏可以提示正确和错误的次数
Jul 01 Javascript
JS简单计算器实例
Jan 20 Javascript
最简单的JavaScript验证整数、小数、实数、有效位小数正则表达式
Apr 17 Javascript
JavaScript简单修改窗口大小的方法
Aug 03 Javascript
jQuery实现选中弹出窗口选择框内容后赋值给文本框的方法
Nov 23 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
Jul 14 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
Dec 04 Javascript
vue超时计算的组件实例代码
Jul 09 Javascript
element-ui中按需引入的实现
Dec 25 Javascript
elementui实现预览图片组件二次封装
Dec 29 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
smarty 原来也不过如此~~呵呵
2006/11/25 PHP
PHP遍历目录并返回统计目录大小
2014/06/09 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
2016/01/04 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
2016/03/07 PHP
PHP 与 UTF-8 的最佳实践详细介绍
2017/01/04 PHP
laravel中的一些简单实用功能
2018/11/03 PHP
用JavaScript仿PS里的羽化效果代码
2011/12/20 Javascript
javascript函数以及基础写法100多条实用整理
2013/01/13 Javascript
ie浏览器使用js导出网页到excel并打印
2014/03/11 Javascript
JavaScript中的await/async的作用和用法
2016/10/31 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
2016/11/30 Javascript
基于JavaScript实现自动更新倒计时效果
2016/12/19 Javascript
AngularJs上传前预览图片的实例代码
2017/01/20 Javascript
jQuery ajax请求struts action实现异步刷新
2017/04/19 jQuery
基于jquery的on和click的区别详解
2018/01/15 jQuery
详解使用React进行组件库开发
2018/02/06 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
2019/05/16 Javascript
js实现多张图片每隔一秒切换一张图片
2019/07/29 Javascript
jquery实现垂直手风琴导航栏
2020/02/18 jQuery
vue + node如何通过一个Txt文件批量生成MP3并压缩成Zip
2020/06/02 Javascript
浅谈js中的attributes和Attribute的用法与区别
2020/07/16 Javascript
浅谈es6中的元编程
2020/12/01 Javascript
vuex页面刷新导致数据丢失的解决方案
2020/12/10 Vue.js
使用Python对Csv文件操作实例代码
2017/05/12 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
2017/12/14 Python
Python获取系统所有进程PID及进程名称的方法示例
2018/05/24 Python
对Python获取屏幕截图的4种方法详解
2019/08/27 Python
python中return不返回值的问题解析
2020/07/22 Python
python实现图片素描效果
2020/09/26 Python
Python Pandas数据分析工具用法实例
2020/11/05 Python
Rag & Bone官网:瑞格布恩高级成衣
2018/04/19 全球购物
美国购买新书和二手书网站:Better World Books
2018/10/31 全球购物
党委班子对照检查材料
2014/08/19 职场文书
推广普通话共筑中国梦演讲稿
2014/09/21 职场文书
个人三严三实对照检查材料思想汇报
2014/09/22 职场文书
大学生各类奖学金申请书
2019/06/24 职场文书