非常不错js弹出层效果代码

转自http://www.111cn.net/js_a/javascript/45718.htm

<!DOCTYPE html>

<html>
<head>
<meta charset="utf-8" />
<title></title>

<style type="text/css">


/* 
        @名称: base
        @功能: 重设浏览器默认样式
*/
 
/* 防止用户自定义背景颜色对网页的影响,添加让用户可以自定义字体 */
html{
        color:#000;background:#fff;
        -webkit-text-size-adjust: 100%;
    -ms-text-size-adjust: 100%;
}
 
/* 内外边距通常让各个浏览器样式的表现位置不同 */
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td,hr,button,article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section {
        margin:0;padding:0;
}
 
/* 重设 HTML5 标签, IE 需要在 js 中 createElement(TAG) */
article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section { 
    display:block;
}
 
/* HTML5 媒体文件跟 img 保持一致 */
audio,canvas,video {
    display: inline-block;*display: inline;*zoom: 1;
}
 
/* 要注意表单元素并不继承父级 font 的问题 */
body,button,input,select,textarea{
        font:12px/1.5 tahoma,arial,5b8b4f53;
}
input,select,textarea{
        font-size:100%;
}
 
/* 去掉各Table  cell 的边距并让其边重合 */
table{
        border-collapse:collapse;border-spacing:0;
}
 
/* IE bug fixed: th 不继承 text-align*/
th{
        text-align:inherit;
}
 
/* 去除默认边框 */
fieldset,img{
        border:0;
}
 
/* ie6 7 8(q) bug 显示为行内表现 */
iframe{
        display:block;
}
 
/* 去掉 firefox 下此元素的边框 */
abbr,acronym{
        border:0;font-variant:normal;
}
 
/* 一致的 del 样式 */
del {
        text-decoration:line-through;
}
 
address,caption,cite,code,dfn,em,th,var {
        font-style:normal;
        font-weight:500;
}
 
/* 去掉列表前的标识, li 会继承 */
ol,ul {
        list-style:none;
}
 
/* 对齐是排版最重要的因素, 别让什么都居中 */
caption,th {
        text-align:left;
}
 
/* 来自yahoo, 让标题都自定义, 适应多个系统应用 */
h1,h2,h3,h4,h5,h6 {
        font-size:100%;
        font-weight:500;
}
 
q:before,q:after {
        content:'';
}
 
/* 统一上标和下标 */
sub, sup {
    font-size: 75%; line-height: 0; position: relative; vertical-align: baseline;
}
sup {top: -0.5em;}
sub {bottom: -0.25em;}
 
 
 
/* 让链接在 hover 状态下显示下划线 */
a:hover {
        text-decoration:underline;
}
 
/* 默认不显示下划线,保持页面简洁 */
ins,a {
        text-decoration:none;
}
 
/* 清理浮动 */
.fn-clearfix:after {
        visibility:hidden;
        display:block;
        font-size:0;
        content:" ";
        clear:both;
        height:0;
}
.fn-clearfix {
        zoom:1; /* for IE6 IE7 */
}
 
/* 隐藏, 通常用来与 JS 配合 */
body .fn-hide {
        display:none;
}
 
/* 视觉隐藏,但在布局中占位*/
.fn-invisible {
    visibility: hidden;
}
 
/* 设置内联, 减少浮动带来的bug */
.fn-left,.fn-right {
        display:inline;
}
.fn-left {
        float:left;
}
.fn-right {
        float:right;
}
 
/* 设置全局样式 */
.text-size12{font-size:12px;}
.text-size14{font-size:14px;}
.text-size16{font-size:16px;}
.text-size18{font-size:18px;}


body{
min-width: 1000px;
overflow: auto;
}
.wrapper{
width: 1000px;
font-size: 14px;
margin: 0 auto;
}
.words{
margin-bottom: 200px;
}


.popup-layer{
z-index: 1000;
position: absolute;
top:0;
left: 0;
display: none;
background: rgba(0,0,0,0.75);
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#CC000000,endColorstr=#CC000000);
cursor: auto;


}


.popup-layer-box{
position: absolute;
width: 700px;
height: 400px;
background-color: #94C2E0;
}


.close-popupLayer{
position: absolute;
top: 2px;
right: 2px;
font-size: 40px;
line-height: 40px;
color: red;
font-weight: bold;
cursor: pointer;
}
.btn-popup{
padding: 20px;
cursor: pointer;
font-size: 20px;
font-weight: bold;
color: red;
}


</style>
</head>
<body>
<div class="wrapper">



<p><input type="button" value="click me~" class="btn-popup" id="btnPopup" /></p>
<p class="words">SetCapture()函数的说明为:“该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。”SetCapture()函数的说明为:“该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。”</p><p class="words">SetCapture()函数的说明为:“该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。”SetCapture()函数的说明为:“该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。”</p><p class="words">SetCapture()函数的说明为:“该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。”SetCapture()函数的说明为:“该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。”</p><p class="words">SetCapture()函数的说明为:“该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。”SetCapture()函数的说明为:“该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。”</p>

</div>



<div id="popupLayer" class="popup-layer">


<div id="popupLayerBox" class="popup-layer-box">
<div id="closePopupLayer" class="close-popupLayer">×</div>
</div>


</div>

<script type="text/javascript" >
var Popup=(function(){


    var close_trigger,    //关闭弹出层触发器
        popup_layer,      //弹出层
        popup_layer_box;  //弹出层里的box




    //设置弹出层的高、宽度
    function initLayer(){


        //先初始化先,不然resize有问题
        popup_layer.style.width=0+"px";
        popup_layer.style.height=0+"px";
        var winWidth,
            winHeight;
        if (window.innerWidth){
            winWidth = window.innerWidth;
        }else if ((document.body) && (document.body.clientWidth)){
            winWidth = document.body.clientWidth;
        }
        //获取窗口高度
        if (window.innerHeight){
            winHeight = window.innerHeight;
        }else if ((document.body) && (document.body.clientHeight)){
            winHeight = document.body.clientHeight;
        }  
        //通过深入Document内部对body进行检测,获取窗口大小
        if (document.documentElement  && document.documentElement.clientHeight && document.documentElement.clientWidth){
            winHeight = document.documentElement.clientHeight;
            winWidth = document.documentElement.clientWidth;
        }
        popup_layer.style.width=winWidth+"px";
        popup_layer.style.height=winHeight+"px";




        var scrollTop=(document.documentElement.scrollTop>document.body.scrollTop)?document.documentElement.scrollTop:document.body.scrollTop;
        popup_layer.style.top=scrollTop+"px";


    }


 
    //设置弹出层里面box的位置
    function initLayerBox(){


        var layerHeight=parseInt(popup_layer.style.height),
            boxHeight=popup_layer_box.offsetHeight,
            layerWidth=parseInt(popup_layer.style.width),
            boxWidth=popup_layer_box.offsetWidth,


            top=(layerHeight-boxHeight)/2,
            left=(layerWidth-boxWidth)/2;
    


        popup_layer_box.style.top=top+"px";
        popup_layer_box.style.left=left+"px";
    }




    function closeLayerHandler(event){
        var e=event?event:window.event,
            target=e.target||e.srcElement;
        if(target.id===close_trigger.id||target.id===popup_layer.id){
            popup_layer.style.display='none';
            toggleBody('auto','');
        }        
    }


    function popupResizeHandler(){
        initLayer();
        initLayerBox();


    }


    function toggleBody(bo,ho){
        document.body.style.overflow=bo;
        document.getElementsByTagName('html')[0].style.overflow=ho;    //ie6下直接设置body的overflow时有问题,所以加多这一句
    }
    return{


        init:function(close_trigger_id,popup_layer_id,popup_layer_box_id){




            close_trigger=document.getElementById(close_trigger_id);
            popup_layer=document.getElementById(popup_layer_id);
            popup_layer_box=document.getElementById(popup_layer_box_id);


            window.οnresize=popupResizeHandler;            
            close_trigger.οnclick=closeLayerHandler;
            popup_layer.οnclick=closeLayerHandler;
            
        },
        popup:function(){
            toggleBody('hidden','visible');
            popup_layer.style.display="block";
            initLayer();
            initLayerBox();
            
        }


    }




}());


var trigger=document.getElementById('btnPopup');
Popup.init('closePopupLayer','popupLayer','popupLayerBox');
trigger.οnclick=Popup.popup;
</script>
</body>
</html></td>
 </tr>
</table>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值