定时展开与收缩广告的代码,如下:
<script>
/**
基本功能:
1、JS卷帘门广告特效,定时展开收缩广告,广告显示一定时间后自动关闭。
2、可设置显示时长,延迟时长,收展速度等参数。
3、可自定义广告展开前执行操作和广告收缩完成后执行操作。
使用示例:
var s = new slider('slideAd',3,1,10,90,3);
s.addafter(function(){alert("谢谢观看!");});
参数说明:
new slider(id, stay, delay, scrolldelay, MaxHeight, MinHeight);
id 'slideAd' 容器ID (必选)
stay [3] 显示时长 (可选,默认:3秒)
delay [1] 延时,推迟展开 (可选,默认:1秒)
scrolldelay [10] 停顿时间,值越小,收展速度越快 (可选,默认:10)
MaxHeight [90] 容器最大高度,当广告展开到MaxHeight高度时停止展开 (可选,默认将容器完全展开)
MinHeight [3] 容器最小高度,当广告收起到MinHeight高度时停止收起 (可选,默认:容器指定的height或0)
辅助功能:
addbefore - 添加广告展开前需要执行的操作,要求所传参数是function
addafter - 添加广告收缩完成后所需执行的操作,要求所传参数是function
//编辑整理:www.jb200.com
*/
function slider(id, stay, delay, scrolldelay)
{
this.ID = document.getElementById(id);
this.stay = typeof stay == "number" ? stay : 3;
this.delay = typeof delay == "number" ? delay : 1;
this.scrolldelay = typeof scrolldelay == "number" ? scrolldelay : 10;
if(typeof arguments[5] == "number")
{
this.MinHeight = arguments[5];
}
else
{
if(this.ID.style.height)
{
this.MinHeight = this.ID.offsetHeight;
}
else
{
this.MinHeight = 0;
this.ID.style.height = "0px";
}
}
if(typeof arguments[4] == "number")
{
this.MaxHeight = arguments[4];
}
else
{
var _h = this.ID.offsetHeight;
var _display = this.ID.style.display;
this.ID.style.display = '';
this.ID.style.visibility = 'hidden';
this.ID.style.height = '';
this.MaxHeight = this.ID.offsetHeight;
this.ID.style.visibility = 'visible';
this.ID.style.display = _display;
this.ID.style.height = _h + 'px';
}
this.before = [];
this.after = [];
var intervalId = null;
var a = this;
function show()
{
try{ a.dobefore(); }catch(e){ }
var h = a.ID.offsetHeight;
a.ID.style.display = '';
a.ID.style.height = (h + 1) + "px";
if(a.ID.offsetHeight >= a.MaxHeight)
{
setTimeout(shut, a.stay * 1000);
}
else
{
setTimeout(show, a.scrolldelay);
}
}
function shut()
{
var h = a.ID.offsetHeight;
a.ID.style.height = (h - 1 < 0 ? 0 : h - 1) + "px";
if (a.ID.offsetHeight <= a.MinHeight)
{
if(a.MinHeight == 0) a.ID.style.display = "none";
try{
a.doafter();
}catch(e){
}
}
else
{
setTimeout(shut, a.scrolldelay);
}
}
this.show = show;
this.shut = shut;
setTimeout(show, this.delay * 1000);
}
slider.prototype.addbefore = function(func)
{
this.before.push(func);
}
slider.prototype.dobefore = function()
{
for(var i = 0; i < this.before.length; i++)
{
this.before[i]();
}
}
slider.prototype.addafter = function(func)
{
this.after.push(func);
}
slider.prototype.doafter = function()
{
for(var i = 0; i < this.after.length; i++)
{
this.after[i]();
}
}
</script>