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 相关文章推荐
JQery 渐变图片导航效果代码 漂亮
Jan 01 Javascript
ie 7/8不支持trim的属性的解决方案
May 23 Javascript
JS前端笔试题分析
Dec 19 Javascript
layer弹出层框架alert与msg详解
Mar 14 Javascript
在bootstrap中实现轮播图实例代码
Jun 11 Javascript
vue路由嵌套的SPA实现步骤
Nov 06 Javascript
[原创]jQuery实现合并/追加数组并去除重复项的方法
Apr 11 jQuery
如何在Vue.js中实现标签页组件详解
Jan 02 Javascript
javascript实现对话框功能警告(alert 消息对话框)确认(confirm 消息对话框)
May 07 Javascript
jquery.pager.js实现分页效果
Jul 29 jQuery
layui实现tab的添加拒绝重复的方法
Sep 04 Javascript
解决vscode进行vue格式化,会自动补分号和双引号的问题
Oct 26 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中利用XML技术构造远程服务(下)
2006/10/09 PHP
php数组合并与拆分实例分析
2015/06/12 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
javascript 控制弹出窗口
2007/04/10 Javascript
初窥JQuery-Jquery简介 入门了解篇
2010/11/25 Javascript
jQuery hover 延时器实现代码
2011/03/12 Javascript
得到jQuery detach()后节点中的某个值实现代码
2013/02/05 Javascript
js控制web打印(局部打印)方法整理
2013/05/29 Javascript
全面解析Bootstrap表单使用方法(表单控件)
2015/11/24 Javascript
JS 实现可停顿的垂直滚动实例代码
2016/11/23 Javascript
Jquery Easyui分割按钮组件SplitButton使用详解(17)
2016/12/18 Javascript
VUE实现日历组件功能
2017/03/13 Javascript
JavaScript门面模式详解
2017/10/19 Javascript
JavaScript模拟实现封装的三种方式及写法区别
2017/10/27 Javascript
vue微信分享的实现(在当前页面分享其他页面)
2019/04/16 Javascript
浅析Vue中拆分视图层代码的5点建议
2019/08/15 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
2020/07/24 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
2020/10/27 Javascript
[02:22]《新闻直播间》2017年08月14日
2017/08/15 DOTA
python绘图库Matplotlib的安装
2014/07/03 Python
python爬虫自动创建文件夹的功能
2018/08/01 Python
解析Tensorflow之MNIST的使用
2020/06/30 Python
一款纯css3实现的非常实用的鼠标悬停特效演示
2014/11/05 HTML / CSS
Debenhams百货英国官方网站:Debenhams UK
2016/07/12 全球购物
美国杂志订阅折扣与优惠网站:Magazines.com
2016/08/31 全球购物
太阳镜仓库,售价20美元或更少:Sunglass Warehouse
2016/09/28 全球购物
创业计划书如何吸引他人眼球
2014/01/10 职场文书
讲文明树新风公益广告宣传方案
2014/02/25 职场文书
法定代表人授权委托书
2014/09/19 职场文书
社保代办委托书怎么写
2014/10/06 职场文书
工程部经理岗位职责
2015/02/02 职场文书
农村党员干部承诺书
2015/05/04 职场文书
工作证明格式范文
2015/06/15 职场文书
MySQL创建表操作命令分享
2022/03/25 MySQL
教你使用Jenkins集成Harbor自动发布镜像
2022/04/03 Servers
css3手动实现pc端横向滚动
2022/06/21 HTML / CSS