jQuery 遮罩层效果

最精简,最强大的 jQuery 遮罩层效果。

  1. 当浏览器改变大小时,遮罩层的大小会相应地改变。
  2. 遮罩层上方的对话框可随 scroll 的改变而改变,即对话框居中显示。

HTML Code:

<div id="main"> <a href="#" onclick="showBg();">点击这里看 jQuery 遮罩层效果.</a> </div>
<!-- jQuery 遮罩层 -->
<div id="fullbg"></div>
<!-- end jQuery 遮罩层 --> 
<!-- 对话框 -->
<div id="dialog">
  <p class="close"><a href="#" onclick="closeBg();">关闭</a></p>
  <p>正在加载,请稍后...</p>
</div>
<!-- jQuery 遮罩层上方的对话框 -->

CSS Code:

body {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 12px;
    margin: 0;
}
#main {
    height: 1800px;
    padding-top: 90px;
    text-align: center;
}
#fullbg {
    background-color: Gray;
    left: 0px;
    opacity: 0.5;
    position: absolute;
    top: 0px;
    z-index: 3;
    filter: alpha(opacity=50); /* IE6 */
    -moz-opacity: 0.5; /* Mozilla */
    -khtml-opacity: 0.5; /* Safari */
}
#dialog {
    background-color: #FFF;
    border: 1px solid #888;
    display: none;
    height: 200px;
    left: 50%;
    margin: -100px 0 0 -100px;
    padding: 12px;
    position: fixed !important; /* 浮动对话框 */
    position: absolute;
    top: 50%;
    width: 200px;
    z-index: 5;
}
#dialog p {
    margin: 0 0 12px;
}
#dialog p.close {
    text-align: right;
}

jQuery Code:

<script type="text/javascript">
    //显示灰色 jQuery 遮罩层
    function showBg() {
        var bh = $("body").height();
        var bw = $("body").width();
        $("#fullbg").css({
            height: bh,
            width: bw,
            display: "block"
        });
        $("#dialog").show();
    }
    //关闭灰色 jQuery 遮罩
    function closeBg() {
        $("#fullbg,#dialog").hide();
    }
</script>
<!--[if lte IE 6]>
<script type="text/javascript">
    // 浮动对话框
    $(document).ready(function() {
        var domThis = $('#dialog')[0];
        var wh = $(window).height() / 2;
        $("body").css({
            "background-attachment": "fixed",
            "background-image": "url(about:blank)"
        });
        domThis.style.setExpression('top', 'eval((document.documentElement).scrollTop + ' + wh + ') + "px"');
    });
</script>
<![endif]-->

注意:请将遮罩层的 DIV 放置于 HTML 文档最后 </body> 标签之前,否则遮罩层将无法获取当前浏览器窗口的高度。

《jQuery 遮罩层效果》有2个想法

    1. 在代码中有一段真对 IE 的 jQuery 代码来实现 scroll 跟随效果的,不过在 IE 中有振动现象。

发表评论

电子邮件地址不会被公开。 必填项已用*标注