简单的jQuery弹出遮罩层

简单的jQuery弹出遮罩层DEMO

特点:代码量少,简单易用。没有格式限制,随意的代码填充。舍弃了在ie6/7/8下的完全兼容(背景不透明),仅保证信息内容可正常阅读。

缺点:考虑到在触屏手机上的效果,未添加对scroll事件的响应,否则有可能永远看不到弹出的内容(网页的缩放会影响scrollTop值)。

相关插件要么功能太强大体积也大,要么是固定的格式需要预设标题、内容、关闭按钮等。非固定样式又非常灵活的一时没找到,就把手头的一个有bug的原生javascript弹出层改动了一下,借助jQuery绕开了麻烦的兼容性问题,正好如今每个项目都用了jQuery,最终效果凑合着用还是可以的。更好的实现方法和能兼容手机的方法还望有高手多多指点,发现有问题也请多多批评指正。

HTML

<div id="background"></div>
<div id="content">
    这里可以是随意的标签、随意的内容 - mming
</div>
<input id="btn" type="button" value="点我" />

CSS

#background {position:absolute; z-index:998; top:0px; left:0px; background:rgb(50,50,50);background:rgba(0,0,0,0.5); display:none;}
#content {position:absolute; width:500px; z-index:999; padding:10px; background:#fff; border-radius:5px; display:none;}

jQuery

$(function() {
    function conPosition() {
        var oBackground = document.getElementById("background");
        var dw = $(document).width();
        var dh = $(document).height();
        oBackground.style.width = dw+'px';
        oBackground.style.height = dh+'px';
        var oContent = document.getElementById("content");
        var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
        var l = (document.documentElement.clientWidth - oContent.offsetWidth) / 2;
        var t = ((document.documentElement.clientHeight - oContent.offsetHeight) / 2) + scrollTop;
        oContent.style.left = l + 'px';
        oContent.style.top = t + 'px';
    }
    $("#btn").click(function() {
        $("#background, #content").show();
        conPosition();
    });
    $("#background").click(function() {$("#background, #content").hide();});
    //点击黑色背景隐藏弹出层,当然可以绑定在任意一个按钮上
    $(window).resize(function() {conPosition();});
    //$(window).scroll(function() {conPosition();});
    //开启内容跟随垂直滚动条(水平滚动条需要处理的问题更多,暂时没有考虑)
});

简单的jQuery弹出遮罩层DEMO

更多相关:jquery特效jquery焦点图jquery选项卡jquery表单验证jquery闪烁字原生js特效

mming原创,转载请注明:http://www.mming.cc/blog/?p=701