我在网上找一个相关的右下弹出的那种JS,但是弹出的速度太慢,自己改了半天也没改明白,请大家帮忙看看到底那个是控制弹出与关闭速度的,谢谢!
JS代码如下:var sheyMsg=function(box,options) {
this.box=this.g(box);
this.setOptions(options);
this.init();
}
sheyMsg.prototype={
    ae:function(e,call) {
        if(window.addEventListener)window.addEventListener(e,call,false);
        else window.attachEvent("on"+e,call);
    },
    g:function(id) {return typeof(id)=="string"?document.getElementById(id):id; },
    isFixed:!window.ActiveXObject || (navigator.userAgent.indexOf("MSIE 6")==-1 &&  document.compatMode=="CSS1Compat"),
    setOptions:function(options) {
this.options={//默认配置
showDelay:0,//显示延时
autoHide:0,//自动隐藏时间,设置为0时,不自动隐藏
onShow:function(){},//显示后调用
onHide:function(){}//隐藏后调用
};
for(var o in options) {
this.options[o]=options[o];
}
    },
    hide:function() {//隐藏
var _top=this.box.clientHeight;
var o=this;
if(/ing$/.test(o.status))return;
o.status="hiding";
clearTimeout(o.tt);
o.t=setInterval(function() {
    if(o.isFixed)
    o.box.style.bottom=(-o.box.clientHeight+(--_top))+'px';
else
    o.box.style.top=o.de.scrollTop+o.de.clientHeight-5-(--_top) +"px";
if(_top==-5) {
clearInterval(o.t);
o.status="hide";
o.box.style.display="none";
o.options.onHide();
}
},5);
    },
    show:function() {//显示
var _top=0;
var o=this;
if(/ing$/.test(o.status))return;
o.status="showing";
clearTimeout(o.tt);
o.box.style.display="block";
o.t=setInterval(function() {
    if(o.isFixed)
    o.box.style.bottom=(-o.box.clientHeight+(++_top))+"px";
else
    o.box.style.top=(o.de.scrollTop+o.de.clientHeight-5-(++_top)) +"px";
if(_top==o.box.clientHeight) {
clearInterval(o.t);
o.status="show";
o.options.onShow();
var h=o.options.autoHide-0;
if(h) o.tt=setTimeout(function() {o.hide();},h*1000);
}
},1);
    },
    fixIE6:function() {//IE6 滚动定位
        this.box.style.left=this.de.scrollLeft+this.de.clientWidth-this.box.clientWidth-2+"px";
        if(this.status=="show") {            
            this.box.style.top=this.de.scrollTop+this.de.clientHeight-this.box.clientHeight-5+"px";
        } else if(this.status=="hide") {
    this.box.style.top=this.de.scrollTop+this.de.clientHeight+5+"px";
        }
    },
    init:function() {
with(this.box.style) {
display="block";//显示之后才能取出宽度和高度
if(this.isFixed) {
position="fixed";
right="2px";
bottom=(-this.box.clientHeight-5)+"px";
} else {
position="absolute";
}
}
this.status="hide";
var o=this;
if(!this.isFixed) {
    o.de=document.compatMode=="CSS1Compat"?document.documentElement:document.body;
    var timer;
    this.ae("resize",function() { clearTimeout(timer);timer=setTimeout(function(){o.fixIE6.call(o)},30);});
    this.ae("scroll",function() { clearTimeout(timer);timer=setTimeout(function(){o.fixIE6.call(o)},30);});
    this.fixIE6();//加载时指定位置
}
o.box.style.display="none";
o.tt=setTimeout(function() {o.show();},o.options.showDelay*1);
}
}HTML代码如下:<!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>
    <title>右下角弹出消息</title>
    <style type="text/css">
    /*pre css reset*/
    body,th,td    {font-size:12px;font-family:Tahoma,Helvetica,Arial,'\5b8b\4f53','\5FAE\8F6F\96C5\9ED1',sans-serif;}
    body,th,td,ol,ul,li,dl,dt,dd,h1,h2,h3,h4,h5,h6,pre,form,fieldset,legend,input,button,textarea,p  {margin:0;padding:0;}
    fieldset,img { border:none; }
    a   {color:#3366CC; text-decoration:none;outline:none;}
    a:hover  {color:#FF6600;text-decoration:underline;}
    /************************************************************/
    /*sheyMsg style*/
    .msg { width:240px;display:none; }
 
    .blue .top,.blue .top .title,.blue .top span,.blue .bottom,.blue .bottom a {background:transparent url(images/msg_bg_blue.gif) no-repeat 0px 0px;}
    .blue .center {background:url(images/center_bg_blue.gif) repeat-y;}
    
    .msg .top{width:240px;height:25px;position:relative;}
    .msg .top .title {background-position:-195px -70px;padding-left:30px;line-height:22px;width:100px;height:25px;}
    .msg .top span {background-position:0px -70px;width:36px; height:17px;position:absolute;top:1px;left:198px;cursor:pointer;}
    .msg .top span:hover {background-position:-43px -71px;}    .msg .center { width:240px;height:180px;}
    .msg .center h3{color:#0c4e7c;text-align:center;line-height:23px;font-size:13px;}
    .msg .center p{color: #0c4e7c;margin:0px 10px;line-height:20px;}    .msg .bottom {height:29px;background-position:0px -32px;}
    .msg .bottom a {background-position:-120px -75px;padding-left:20px;margin:7px 10px;float:right;width:30px;height:20px;}
    /*sheyMsg style end*/    .test dd { line-height:30px;}    </style>
</head>
<body>
<!--sheyMsg start-->
<div class="msg blue" id="msgbox">
<div class="top">
    <div class="title">待办事项</div>
    <span title="close" id="msgclose"></span>
</div>
 <div class="center">
<h3>您有以下事项未办</h3>
<br/>
<br/><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#">待办事项(0)</a>
</div>
<div class="bottom"><a target="_blank" href="http://blog.csdn.net/sohighthesky/archive/2009/11/10/4795886.aspx">查看</a>
</div>
</div>
<!--sheyMsg end-->
</div>
</body>
<script type="text/javascript" src="sheyMsg.js"></script>
<script type="text/javascript">
var g=function(id){return document.getElementById(id)};
var msg=new sheyMsg("msgbox",{
    showDelay:15,//
onHide:function(){

},
onShow:function() {

}
});
g("msgclose").onclick=function() {//hide
msg.hide();
}
</script>
</html>

解决方案 »

  1.   


             o.t=setInterval(function() {
                _top=_top+5;//增加的,还慢就改5,要更快就变大,慢就变小
                if(o.isFixed)
                    o.box.style.bottom=(-o.box.clientHeight+(++_top))+"px";
                else
                    o.box.style.top=(o.de.scrollTop+o.de.clientHeight-5-(++_top)) +"px";
                if(_top>=o.box.clientHeight) {//修改了==为>=
                    clearInterval(o.t);
                    o.status="show";
                    o.options.onShow();
                    var h=o.options.autoHide-0;
                    if(h) o.tt=setTimeout(function() {o.hide();},h*1000);
                }
            },1);
      

  2.   

    if(o.isFixed)
                    o.box.style.bottom=(-o.box.clientHeight+(--_top))+'px';
                else
                    o.box.style.top=o.de.scrollTop+o.de.clientHeight-5-(--_top) +"px";在这里设置关闭的速度
      

  3.   


        hide:function() {//隐藏
            var _top=this.box.clientHeight;
            var o=this;
            if(/ing$/.test(o.status))return;
            o.status="hiding";
            clearTimeout(o.tt);
            o.t=setInterval(function() {
    _top=_top-5;//增加的,还慢就改5,要更快就变大,慢就变小
                if(o.isFixed)
                    o.box.style.bottom=(-o.box.clientHeight+(--_top))+'px';
                else
                    o.box.style.top=o.de.scrollTop+o.de.clientHeight-5-(--_top) +"px";
                if(_top<=-5) {//修改了==为<=
                    clearInterval(o.t);
                    o.status="hide";
                    o.box.style.display="none";
                    o.options.onHide();
                }
            },5);
        },
        show:function() {//显示
            var _top=0;
            var o=this;
            if(/ing$/.test(o.status))return;
            o.status="showing";
            clearTimeout(o.tt);
            o.box.style.display="block";
             o.t=setInterval(function() {
                _top=_top+5;//增加的,还慢就改5,要更快就变大,慢就变小
                if(o.isFixed)
                    o.box.style.bottom=(-o.box.clientHeight+(++_top))+"px";
                else
                    o.box.style.top=(o.de.scrollTop+o.de.clientHeight-5-(++_top)) +"px";
                if(_top>=o.box.clientHeight) {//修改了==为>=
                    clearInterval(o.t);
                    o.status="show";
                    o.options.onShow();
                    var h=o.options.autoHide-0;
                    if(h) o.tt=setTimeout(function() {o.hide();},h*1000);
                }
            },1);
        }
      

  4.   


    var sheyMsg=function(box,options) {
        this.box=this.g(box);
        this.setOptions(options);
        this.init();
    }
    sheyMsg.prototype={
        ae:function(e,call) {
            if(window.addEventListener)window.addEventListener(e,call,false);
            else window.attachEvent("on"+e,call);
        },
        g:function(id) {return typeof(id)=="string"?document.getElementById(id):id; },
        isFixed:!window.ActiveXObject || (navigator.userAgent.indexOf("MSIE 6")==-1 &&  document.compatMode=="CSS1Compat"),
        setOptions:function(options) {
            this.options={//默认配置
                    showDelay:0,//显示延时
                    autoHide:0,//自动隐藏时间,设置为0时,不自动隐藏
    speed:5,//越大速度越快
                    onShow:function(){},//显示后调用
                    onHide:function(){}//隐藏后调用
            };
            for(var o in options) {
                this.options[o]=options[o];
            }
        },
        hide:function() {//隐藏
            var _top=this.box.clientHeight;
            var o=this;
            if(/ing$/.test(o.status))return;
            o.status="hiding";
            clearTimeout(o.tt);
            o.t=setInterval(function() {
    _top=_top-o.options.speed;
                if(o.isFixed)
                    o.box.style.bottom=(-o.box.clientHeight+(--_top))+'px';
                else
                    o.box.style.top=o.de.scrollTop+o.de.clientHeight-5-(--_top) +"px";
                if(_top<=-5) {
                    clearInterval(o.t);
                    o.status="hide";
                    o.box.style.display="none";
                    o.options.onHide();
                }
            },5);
        },
        show:function() {//显示
            var _top=0;
            var o=this;
            if(/ing$/.test(o.status))return;
            o.status="showing";
            clearTimeout(o.tt);
            o.box.style.display="block";
             o.t=setInterval(function() {
                _top=_top+o.options.speed;
                if(o.isFixed)
                    o.box.style.bottom=(-o.box.clientHeight+(++_top))+"px";
                else
                    o.box.style.top=(o.de.scrollTop+o.de.clientHeight-5-(++_top)) +"px";
                if(_top>=o.box.clientHeight) {
                    clearInterval(o.t);
                    o.status="show";
                    o.options.onShow();
                    var h=o.options.autoHide-0;
                    if(h) o.tt=setTimeout(function() {o.hide();},h*1000);
                }
            },1);
        },
        fixIE6:function() {//IE6 滚动定位
            this.box.style.left=this.de.scrollLeft+this.de.clientWidth-this.box.clientWidth-2+"px";
            if(this.status=="show") {            
                this.box.style.top=this.de.scrollTop+this.de.clientHeight-this.box.clientHeight-5+"px";
            } else if(this.status=="hide") {
                this.box.style.top=this.de.scrollTop+this.de.clientHeight+5+"px";
            }
        },
        init:function() {
            with(this.box.style) {
                display="block";//显示之后才能取出宽度和高度
                if(this.isFixed) {
                    position="fixed";
                    right="2px";
                    bottom=(-this.box.clientHeight-5)+"px";
                } else {
                    position="absolute";
                }
            }
            this.status="hide";
    this.options.speed=(this.options.speed<0)?0:this.options.speed;
            var o=this;
            if(!this.isFixed) {
                o.de=document.compatMode=="CSS1Compat"?document.documentElement:document.body;
                var timer;
                this.ae("resize",function() { clearTimeout(timer);timer=setTimeout(function(){o.fixIE6.call(o)},30);});
                this.ae("scroll",function() { clearTimeout(timer);timer=setTimeout(function(){o.fixIE6.call(o)},30);});
                this.fixIE6();//加载时指定位置
            }
            o.box.style.display="none";
            o.tt=setTimeout(function() {o.show();},o.options.showDelay*1);
        }
    }