杭州设计公司,杭州广告设计公司
全屏弹出div提示框通用javascript
信息来源:网络     栏目类别: 网页设计     浏览次数:     发表评论 减小字体 增大字体
代码如下:

样式:

body{margin:0;padding:0;}
.popupdiv{text-align:left;display:block; position:absolute; top:50%; left:50%;z-index:999; }
#popupbg,.popupifra{ background:#000; width:100%; position:absolute; top:0; left:0; z-index:998;opacity:0.3;filter:Alpha(opacity=30);}
.popupifra{display:block; border:none; background:none; z-index:997; background-color:transparency;filter:Alpha(opacity=0);}
.hidden { display:none;}
.show { display:block;}

Javascript:

// author:ycsy520
// version:0.1.2
// date:2008/07/12

var POPUP = {
    getH:function(){
        if (window.innerHeight && window.scrollMaxY) {
            yScroll = window.innerHeight + window.scrollMaxY;
        } else if (document.body.scrollHeight > document.body.offsetHeight){
            yScroll = document.body.scrollHeight;
        } else {yScroll = document.body.offsetHeight;}
        return yScroll;      
    },
    pw:function(el){
        if(!document.getElementById(el)){return false;}
        if(!document.createElement){return false;}
        POPUP.cpw(el);
        if(POPUP.hasSlt()){POPUP.cifr();}
    },
    cpw:function(el){
        el= document.getElementById(el);      
        el.className = "popupdiv";
        el.style.marginLeft = "-" + el.clientWidth/2 + "px";
        pwb = document.createElement('div');
        pwb.setAttribute('id','popupbg');
        ph =el.clientHeight;
        sh = (window.innerHeight) ? window.innerHeight : (document.documentElement && document.documentElement.clientHeight) ? document.documentElement.clientHeight : document.body.offsetHeight;
        bh = POPUP.getH();
        if(ph>bh){
            el.style.marginTop = "-180px";
            pwb.style.height = ph+180+"px";
        }else{
            if(ph>sh){
                pwb.style.height = bh>ph?bh+'px':ph+'px';
                el.style.marginTop = '-180px';
            }else{      
                el.style.marginTop = "-" + ph/2 + 'px';
                pwb.style.height = sh>bh?sh+'px':bh+'px';
            }  
        }
        return document.body.appendChild(pwb);
    },
    cifr:function(){
        if(!document.createElement("iframe")){return false;};
        ifr = document.createElement("iframe");
        ifr.setAttribute("id","divshim");
        ifr.setAttribute("src","javascript:void(0);");
        ifr.setAttribute("scrolling","no");
        ifr.setAttribute("frameborder","0");
        ifr.setAttribute("allowtransparency","true");
        POPUP.insertAfter(ifr,pwb);
        ifr.className = "popupifra";
        ifr.style.height = pwb.style.height;
        ifr.style.width = pwb.style.width;      
    },
    insertAfter:function(nEl,tEl) {
      var p = tEl.parentNode;if (p.lastChild == tEl) {p.appendChild(nEl);
      } else {p.insertBefore(nEl,tEl.nextSibling); }
    },
    hasSlt:function(){
        var a = document.getElementsByTagName('*');
        var hasSlt = false;
        for(var i=a.length-1;i>=0;i--){
            if(a[i].nodeName == 'SELECT'){hasSlt = true;break;}
        }
        return hasSlt;
    },
    attr:function(el,name,value){
        if(!name || name.constructor != String){return '';}
        name = {'for':'htmlFor','class':'className'}[name] || name;
        if(typeof value != 'undefined'){
            el[name] = value;
            if(el.setAttribute){el.setAttribute(name,value);}
            return el[name] || el.getAttribute(name) || '';
        }
    },
    cw:function(el){
    pwb.className = "hidden";
    document.getElementById(el).className = "hidden";  
    if(POPUP.hasSlt()){ifr.className="hidden"}
    }
}

function addLoadEvent(func){var oldonload = window.onload;if(typeof window.onload != 'function'){window.onload = func;}else{window.onload = function(){oldonload();func();}}}

addLoadEvent(POPUP.getH);


用法:


<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>弹出框提示方法</title>
<link href="../style/popUpWin.css" rel="stylesheet" type="text/css" />
<script language="JavaScript" type="text/javascript" src="../scripts/popupdiv.js"></script>
</head>
<body>
<div id="bigFram" class="hidden">
<div style="height:2200px; width:900px; background:#fff; border:2px solid #ccc; "> <span style="display:block; line-height:30px; text-align:right; padding-right:10px; background:#f1f1f1;"> <a href="#" onclick="POPUP.cw('bigFram');">关闭</a> </span>
    <select>
      <option>---------------------------------</option>
    </select>
</div>
</div>
<div id="errorFram" class="hidden">
<div style="height:120px; width:300px; background:#fff; border:2px solid #ccc; "> <span style="display:block; line-height:30px; text-align:right; padding-right:10px; background:#f1f1f1;"> <a href="#" onclick="POPUP.cw('errorFram');">关闭</a> </span> </div>
</div>
<div id='table' class="hidden">
<table width="200" border="1" bgcolor="#FFFFFF">
    <tr>
      <td>&nbsp;1</td>
      <td>&nbsp;2</td>
      <td><a href="#" onclick="POPUP.cw('table')">关闭</a></td>
    </tr>
    <tr>
      <td>&nbsp;4</td>
      <td>&nbsp;5</td>
      <td>&nbsp;6</td>
    </tr>
    <tr>
      <td>&nbsp;7</td>
      <td>&nbsp;8</td>
      <td>&nbsp;9</td>
    </tr>
</table>
</div>
<div id="pic" class="hidden">
<div style="text-align:right; background:#fff"><a href="#" onclick="POPUP.cw('pic');">close</a></div>
<img style="padding:2px; background:#fff;" src="http://hiphotos.baidu.com/ycsy520/abpic/item/dde5211ff577a0dca6866919.jpg" /> </div>
<div style="text-align:left; line-height:30px; margin-left:150px;">
<div style="line-height:40px; font-weight:800;"> <strong style="color:#ff3c00; font-size:14px;">点击弹出相应提示:</strong><br />
    <a href="#" onclick="POPUP.pw('errorFram');">错误提示</a><br />
    <a href="#" onclick="POPUP.pw('bigFram');">比较大的弹出提示</a> <br />
    <a href="#" onclick="POPUP.pw('table');">表格</a><br />
    <a href="#" onclick="POPUP.pw('pic');">图片</a>(当然,图片要控制下大小) </div>
<select>
    <option>--------------------------</option>
</select>
</div>
</body>
</htm>

当然,你如果你弄下来玩玩的话,可以把javascrip,css和html copy到同一个文件里面,我这里是把
样式放在style文件夹里面,脚本是在scripts里面,而html则在web文件夹里面。

注释:
getH:function()
这个是取页面的高度,因为各个浏览器对页面的innerHeight,clientHeight等等xxxHeight的解析不一样,有关详细资料可以问百度。这个函数是直接从thickbox里面copy过来的。

pw:function(el)
参数el是你要“弹出”的box的id,这个pw(popup window)也就是“弹出”box,另,这里有个判断,if(POPUP.hasSlt()){POPUP.cifr();},判断页面里面是否有 select,如果有,则“弹出”的时候在生成一个iframe覆盖在页面上以“遮”住select。

cpw:function(el)
生成一个div,也就是那个背景,灰色的那个,而那个iframe就生成在这个div的“下面”。并且判断页面高度,浏览器可视高度和“弹出”div的高度,如果弹出的div高度大于页面高度和浏览器高度,则把它marginTop = "-180px";如果是小于,则把弹出的div固定在页面中间。具体可以看代码,本来想如果如果弹出的div高度很大的话,搞滚动条的,但是觉得麻烦,如果有兴趣的话可以自己去改改。

cifr:function()
生成一个iframe。

insertAfter:function(nEl,tEl)
这个函数是把新的标签插到某某标签的后面,在javascript里面有insertBefore但是没有insertAfter所以就写了个函数,这个函数好像是Jeremy Keith写的,我不太确定,在书DOM Scripting(Javascript DOM 编程艺术)里面有.

hasSlt:function()
判断页面是否有select

attr:function
这个函数用来设置和获取元素特性的值。是大名鼎鼎的John Resig也就是jQuery之父写的,在他的书Pro Javascript Techniques(这本书写的比较专业,不建议初学者看,如果你是jQuery的使用者的话,这本书就非看不可了)里面有详解。

cw:function(el)
关闭,也就是把”弹出“的东西display:none;比较低级的方法。想过用remove,但终究没去改。


addLoadEvent(func)
本来不想用这个函数的,但是考虑到如果页面很大,而且在页面没有载入之前就点击”弹出“div的话,应该会出问题的。所以,还是+上了。
这个函数也就是window.onload,不过,如果你用window.onload的话,在如果,你写了一个window.onload = xxx;
而另一个人也写了window.onload = yyy;并且写在你的window.onload = xxx后面,那么你写的那个window.onload = xxx是不会运行的。而addLoadEvent(func)不会这样。这个函数好像也是Jeremy Keith写的,在书DOM Scripting(Javascript DOM 编程艺术)里面有详解.


后记:
这个javascirpt只是用来”弹出“一些信息,如果你想用这种形式来搞图片展示的话,建议用thickbox或其他。
而且,这个javascirpt不能用在iframe或有框架的页面里面,如果要用的话,要改下代码,也就是取bh,sh的值要取父页面的,搞个判断,判断是否在iframe或框架里面,如果是,那么取这些值得时候要加个parent.

本来想搞个弹出的东西可以拖动的,但是觉得,如果这样,不但别人用的麻烦,而且我写的页面麻烦,会越搞越复杂,还是简单点好。在者,如果你想这个效果要像百度那样的话,也可以,改下样式,把背景弄白点,在写一个函数,创建一个div在”弹出“的div的”下面“(z-index,position),位置比 ”弹出“的div上面和左边差几个像素而且,在写一个类,设置一下样式就ok了。

这里是简单的封装了下,没有完全采用oop的写法,感觉没必要。

如果你觉得这个javascript哪里不妥或不爽的地方,大家可以探讨下。玩玩而且。

//////////////////////////////////////

改下:

关于关闭,这里单纯的“关闭”是display:none,如果点击多次的话,会生成很多<div class="hidden"></div>等等。所以干脆点击关闭的时候,把灰色背景和那个iframe删除。如下:

    cw:function(el){
    document.body.removeChild(pwb);
    document.getElementById(el).className = "hidden";
    if(POPUP.hasSlt()){document.body.removeChild(ifr);}
    }

本文标签:javascript把本文收藏到 网摘 博采 百度】 其它收藏服务:Yahoo书签 QQ书签 百度搜藏 Del.icio.us Google书签 和讯网摘 天极网摘 添加到饭否 收客网
上一篇:JavaScript循环DIV显示/隐藏效果          回网页设计列表         下一篇:指定DIV内容自由改变字体大小
搜索本站其他内容: 百度一下:[全屏弹出div提示框通用javascript]   Google搜索:[全屏弹出div提示框通用javascript]
最新网友评论文章↓
1.sdfsd2008-10-10 12:14:53
2.werewr2008-10-10 12:14:10
3.ewrewr2008-10-10 12:14:00
4.啊2008-10-10 10:54:54
5.第二副图的含义2008-10-10 9:16:47
留言模块加载ing... 设计说明:全屏弹出div提示框通用javascript平面设计,威迪广告公司为您提供设计欣赏,创意生活,设计欣赏,当代艺术,数字娱乐,平面设计,视觉,平面,fireworks,教程,书籍,封面,设计,标志,广告,作品,图片,下载多元化的信息交流咨询,杭州全屏弹出div提示框通用javascript视觉引导式的宣传方法让人过目难忘。将光线巧妙地运用在书籍的投影上,视觉,平面,fireworks,教程,封面,设计似乎书籍由内向外透着一股亮光。书上的窗户和灯泡都是设计欣赏将书从平面转换到空间的一个过渡,这些过渡让人们更想探寻亮光后面的另个空间。全屏弹出div提示框通用javascript平面设计的文化招贴中两本书直接交叉,纯粹的制造出标志,广告,作品,图片,下载一种立体空间感.

文章添加时间:2008-10-14,文件大小:38.51 KB,最近更新时间:2008-10-28 23:25:12 返回TOP↑            

本站文章搜集自网络;共享网络,共享快乐,我为人人,人人为我;如果您知道本站未知来源文章请告知本站谢谢!
文中及留言观点不代表本站;本站转载内容只是为了更好的交流;
若侵犯了您的版权请联系E-mail:有事儿,您Q我!,本站核实后立即处理!

  •             平面设计| 标志设计| 包装设计| 网页设计| 广告设计| VI设计| 画册设计| 专卖店设计| 展位设计| 名片设计| 网站地图|    仅支持IE5及以上1027*768分辨率
  •             友情链接 版权所有 © 威迪广告公司 2008-2010 | TEL:0571-88385993 13296756810 浙ICP备05054324号