设为首页收藏本站订阅更新

无忧脚本

 找回密码
 加入无忧

QQ登录

只需一步,快速开始

查看: 1125|回复: 0

[原创] 再发一个层打开效果 不同思路 [复制链接]

Rank: 3Rank: 3

升级  60.67%

注册时间
2007-10-16
威望
67
阅读权限
30
积分
382
帖子
69
精华
0
UID
77334
状态
当前离线
发表于 2008-5-19 11:28:51 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料 QQ
一键分享 一键分享
前边看到有人发了个层打开效果,总感觉不是很理想 个人认为:-),如果那个层放到固定的容器里面估计就会出现问题的。
今天自己来写个,可以支持 在嵌套的div内打开。支持 ie7 ff
发代码上来 大家拍砖
[php]
<!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>[/php]
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <style type="text/css">
  6. body{}
  7. #main{width:500px; margin:100px; height:500px;border:1px solid red}
  8. #test{border:1px solid red;display:none;width:10px;height:10px; background:yellow}
  9. </style>
  10. <script type="text/javascript">
  11. /*
  12. popper.w code
  13. class: XopenDiv
  14. version: 1.0
  15. date: 2008-5-19
  16. */
  17. </script>
  18. <title>Code By popper.w</title>
  19. </head>

  20. <body>
  21. <input type="button" value="点击打开" id="bt" />
  22. <input type="button" value="点击关闭" id="bt1" />
  23. <div id="main">
  24.                 <div id="test"></div>
  25. </div>
  26. </body>
  27. </html>
  28. <script type="text/javascript">
  29. function $ (o) {
  30.       return document.getElementById(o);
  31. }
  32. function XslideDown(obj,type,mX,num) {
  33.             if(!type){return;}
  34.                         try{
  35.                             
  36.                          var type1=type=="height"?"marginTop":"marginLeft";
  37.                          var type2=type=="height"?"top":"left";
  38.                                  XSetCss(obj,[type1,XgetOffset(obj)[type2]+"px"]);
  39.                                 XSetCss(obj,[type,XgetOffset(obj)[type]+num+"px"]);
  40.                         if(XgetOffset(obj)[type]<mX){
  41.                          setTimeout(function(){XslideDown(obj,type,mX,num);},10);                       
  42.                         }
  43.                         else{
  44.                                   XSetCss(obj,[type,mX])
  45.                          }
  46.                         }
  47.                         catch(e){}
  48.                 }
  49. function XslideUp(obj,type,mX,num) {
  50.             if(!type){return;}
  51.                         try{
  52.                         var type1=type=="height"?"marginTop":"marginLeft";
  53.                         var type2=type=="height"?"top":"left";
  54.                                 XSetCss(obj,[type1,XgetOffset(obj)[type2]+"px"]);
  55.                                 XSetCss(obj,[type,XgetOffset(obj)[type]-num+"px"]);
  56.                         if(XgetOffset(obj)[type]>mX){                       
  57.                          setTimeout(function(){XslideUp(obj,type,mX,num);},1);                       
  58.                         }
  59.                         else{
  60.                                   XSetCss(obj,[type,mX])
  61.                                   obj.style.display="none";
  62.                          }
  63.                         }
  64.                         catch(e){}
  65.                 }
  66. function XSetCss(obj,cssArgs){
  67.         if(arguments.length==2)
  68.         {
  69.           if(cssArgs.constructor==Object){
  70.           for(var o in cssArgs)
  71.                         {
  72.                                 if(obj.style[o]!="undefiend")
  73.                                 {
  74.                                   obj.style[o]=cssArgs[o];                       
  75.                                 }                   
  76.                         }
  77.                 }
  78.          if(cssArgs.constructor==Array&&cssArgs.length==2){
  79.                                 obj.style[cssArgs[0]]=cssArgs[1];                       
  80.          
  81.          }
  82.         }

  83. }
  84. function XgetOffset (obj) {
  85.                  return {
  86.                                         height:obj.offsetHeight,
  87.                                         width:obj.offsetWidth,
  88.                                         top:parseInt((obj.parentNode.offsetHeight-obj.offsetHeight)/2),
  89.                                         left:parseInt((obj.parentNode.offsetWidth-obj.offsetWidth)/2)
  90.                                 }
  91. }
  92. function XopenDiv(o){
  93.                 o.style.display="block";
  94.                 XslideDown(o,"width",400,10);
  95.             XslideDown(o,"height",400,10);
  96. }
  97. function XcloseDiv(o){
  98.                 XslideUp(o,"width",10,10);
  99.             XslideUp(o,"height",10,10);

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

  103. }
  104. $("bt1").onclick=function(){
  105.             
  106.         XcloseDiv($("test"))
  107. }
  108. </script>
复制代码运行代码另存代码

[ 本帖最后由 popper 于 2008-5-19 11:38 编辑 ]
巫妖 ——js
您需要登录后才可以回帖 登录 | 加入无忧

Archiver|手机版|无忧脚本 ( 苏ICP备05080427号 )|值班电话:027-62300445  

GMT+8, 2012-2-7 21:35 , Processed in 0.056190 second(s), 14 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 1999-2011 无忧脚本

回顶部