标题: [原创] 再发一个层打开效果 不同思路
popper
小恐龙
Rank: 3Rank: 3


UID 77334
精华 0
积分 369
帖子 66
威望 63
阅读权限 30
注册 2007-10-16
来自 西安
状态 离线
 
发表于 2008-5-19 11:28  资料  个人空间  短消息  加为好友  QQ
再发一个层打开效果 不同思路

前边看到有人发了个层打开效果,总感觉不是很理想 个人认为:-),如果那个层放到固定的容器里面估计就会出现问题的。
今天自己来写个,可以支持 在嵌套的div内打开。支持 ie7 ff
发代码上来 大家拍砖


<!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" />
<
style type="text/css">
 
body{}
 
#main{width:500px; margin:100px; height:500px;border:1px solid red}
 #test{border:1px solid red;display:none;width:10px;height:10px; background:yellow}
</style>
<
script type="text/javascript">
/* 
popper.w code
class: XopenDiv
version: 1.0
date: 2008-5-19
*/
</script>
<title>Code By popper.w</title>
</head>

<body>
<input type="button" value="点击打开" id="bt" />
<input type="button" value="点击关闭" id="bt1" />
<div id="main">
        <div id="test"></div>
</div>
</body>
</html>
<script type="text/javascript">
function $ (o) {
      return document.getElementById(o);
}
function XslideDown(obj,type,mX,num) {
            if(!type){return;}
            try{
                
             var type1=type=="height"?"marginTop":"marginLeft";
             var type2=type=="height"?"top":"left";
                 XSetCss(obj,[type1,XgetOffset(obj)[type2]+"px"]);
                XSetCss(obj,[type,XgetOffset(obj)[type]+num+"px"]);
            if(XgetOffset(obj)[type]<mX){
             setTimeout(function(){XslideDown(obj,type,mX,num);},10);            
            }
            else{
                  XSetCss(obj,[type,mX])
             }
            }
            catch(e){}
        }
function XslideUp(obj,type,mX,num) {
            if(!type){return;}
            try{
            var type1=type=="height"?"marginTop":"marginLeft";
            var type2=type=="height"?"top":"left";
                XSetCss(obj,[type1,XgetOffset(obj)[type2]+"px"]);
                XSetCss(obj,[type,XgetOffset(obj)[type]-num+"px"]);
            if(XgetOffset(obj)[type]>mX){            
             setTimeout(function(){XslideUp(obj,type,mX,num);},1);            
            }
            else{
                  XSetCss(obj,[type,mX])
                  obj.style.display="none";
             }
            }
            catch(e){}
        }
function XSetCss(obj,cssArgs){
    if(arguments.length==2)
    { 
      if(cssArgs.constructor==Object){
      for(var o in cssArgs)
            {
                if(obj.style[o]!="undefiend")
                {
                  obj.style[o]=cssArgs[o];            
                }           
            } 
        }
     if(cssArgs.constructor==Array&&cssArgs.length==2){
                obj.style[cssArgs[0]]=cssArgs[1];            
     
     }
    }

}
function XgetOffset (obj) {
         return {
                    height:obj.offsetHeight,
                    width:obj.offsetWidth,
                    top:parseInt((obj.parentNode.offsetHeight-obj.offsetHeight)/2),
                    left:parseInt((obj.parentNode.offsetWidth-obj.offsetWidth)/2)
                }
}
function XopenDiv(o){
        o.style.display="block";
        XslideDown(o,"width",400,10);
        XslideDown(o,"height",400,10);
}
function XcloseDiv(o){
        XslideUp(o,"width",10,10);
        XslideUp(o,"height",10,10);

}
$("bt").onclick=function(){
        XopenDiv($("test"))

}
$("bt1").onclick=function(){
        
    XcloseDiv($("test"))
}
</script> 




   提示:您可以先修改部分代码再运行

[[i] 本帖最后由 popper 于 2008-5-19 11:38 编辑 [/i]]





巫妖 ——js
顶部
 



当前时区 GMT+8, 现在时间是 2010-7-31 04:42
苏ICP备05080427号

Powered by Discuz! 5.5.0  © 2001-2007 51JS.COM
Processed in 0.218329 second(s), 8 queries , Gzip enabled

清除 Cookies - 联系我们 - 无忧脚本 - Archiver