您的位置:首页 > Web前端 > JavaScript

JS实现文字掉落效果的方法

2015-05-06 17:46 801 查看
<!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程序设计有所帮助。

您可能感兴趣的文章:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JS 文字