本次实现一个js小小特效,效果就是广告从页面的上方出来将基本页面挤压下去。
实现的思路是将两个div(广告div1和div2)。将div1的高度不断增加,增加的同时div2的y轴坐标变大,div1的高度增加多少相对应的y轴坐标加大多少。
当加大到一定程度的时候,将速度值变为自身负数,并且改变函数下一次的执行间隔,这样就会向上走,当高度为0是将计时器清掉ok。
呵呵,下边看我的源代码吧:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
//将div的属性改为position:absolute;否则div2.style.top=divheight+"px";没作用
<style>
div{
position:absolute;
}
</style>
</head>
<body>
<!--定义两个div,div1为广告div,div2为基本页面div -->
<div id="div1" style="width:1000px; height:0px; background-color:#FF3; border:double; border-color:red"></div>
<div id="div2" style="width:1000px; height:600px; background-color:#00F; border:double; border-color:red"></div>
<script language="javascript" type="text/javascript">
var div1=document.getElementById("div1");
var div2=document.getElementById("div2");
//定义div1的高度和div2的起始纵坐标大小
var divheight=0;
//定义div1的高度和div2的起始纵坐标大小增减的速度
var div1Speed=1;
function floatimg(){
//求出div1增长后的高度
//div1的高度提高多少,相应的div2的起始点的纵坐标就是多少
divheight+=div1Speed;
//如果div1的高度divheight未达到80的时候div1的高度和div2的起始纵坐标都是增加1的,而且按照间隔100的速率循环执行函数floatimg()
if(divheight!=80){
div1.style.height=divheight+"px";
div2.style.top=divheight+"px";
t=setTimeout("floatimg()",20);
}else{
//当div1的高度达到80的时候,div1的高度和div2的起始纵坐标都是减少1的,如何减少呢?很简单,就将增长速度div1Speed变为自身的负数,这样每次加的是-1
//还需要改的地方就是setTimeout执行floatimg()函数的间隔,改为3000,让div1的高度达到80的时候有停顿效果。
div1Speed=-div1Speed;
div1.style.height=divheight+"px";
div2.style.top=divheight+"px";
t=setTimeout("floatimg()",3000);
}
//当divheight再次为0的时候清掉计时器
if(divheight==0){
clearTimeout(t);
}
}
floatimg();
</script>
</body>
</html>