29 04 2015

Jquery实现遮罩层

1、假设#main为页面body中的最外层Div标签

2、背景被遮罩后,显示的弹出窗(默认是不显示的,所包含的CSS这里就不贴了):

复制代码
<!-- Status Bar Start --> <div id="warning-dialog" class="status warning center-top no-display"> <p class="closestatus"><a href="javascript:$().hideWarningDialog()" title="Close">x</a></p> <div class="clear"></div> <p><img src="images/icon_warning.png" alt="Warning" /><span id="warning-dialog-detail">Attention!</span></p> <div class="closes"> <input type="hidden" id="refresh-after-warning" value="false" /> <input name="" type="image" src="images/niu_qd.jpg" align="absmiddle" class="button_jl" onclick="javascript:$().hideWarningDialog()" /> </div> </div> <!-- Status Bar End -->
复制代码

3、在script.js中定义遮罩函数以及弹出窗操作函数,当然script.js,jquery.js需要包含在html页面中:

复制代码
var warning_dialog = $('#warning-dialog'), 
    warning_dialog_detail = $('#warning-dialog-detail'), 
    refresh_after_warning = $('#refresh-after-warning'); // 显示遮罩层 $.fn.showWarningDialog = function(detail, refresh) { if ($isIE6) {
        $(".menu_select").hide();
    }
    $.fn.mask();
    warning_dialog_detail.html(detail);
    refresh_after_warning.val(refresh);
    warning_dialog.css({ "position" : "absolute", "left" : "50%", "top" : "50%", "margin-left" : "-250px", "margin-top" : "-100px", "border" : "solid 3px #ccc", "z-index" : 6000 });
    warning_dialog.show();
} // 去除遮罩层 $.fn.hideWarningDialog = function() { if ($isIE6) {
        $(".menu_select").show();
    }
    $.fn.unmask(); if (refresh_after_warning.val() == "true") {
        $('#main').showLoading();
        location.reload(true);
    } else warning_dialog.hide();
} // 显示遮罩效果 $.fn.mask = function() { this.unmask(); // 参数 var op = {
        bgcolor : '#ccc',
        z : 5100,
        opacity : 0.3 }; var position = {
        top : 0,
        left : 0 }; var original = $("#main"); // 创建一个 Mask 层,追加到对象中 var maskDiv = $('<div class="maskdivgen">&nbsp;</div>');
    maskDiv.appendTo(original); var maskWidth = original.width(); var maskHeight = original.height();
    maskDiv.css({
        position : 'absolute',
        top : position.top,
        left : position.left, 'z-index' : op.z,
        width : maskWidth,
        height : maskHeight, 'background-color' : op.bgcolor,
        opacity : 0 });
    maskDiv.fadeIn('fast', function() { // 淡入淡出效果 $(this).fadeTo('fast', op.opacity);
    }); return maskDiv;
} // 去除遮罩效果 $.fn.unmask = function() { var original = $("#main"); if (this[0] && this[0] !== window.document) {
        original = $(this[0]);
    }
    original.find("> div.maskdivgen").fadeOut('fast', 0, function() {
        $(this).remove();
    });
}
复制代码

 本例中使用main标签获得高度,宽度,如果不想通过标签获得页面高度和宽度,可通过如下方式获得

复制代码
/* 当前页面高度 */ function pageHeight() { return document.body.scrollHeight;
 } /* 当前页面宽度 */ function pageWidth() { return document.body.scrollWidth;
 }
复制代码

 

4、调用遮罩层:

复制代码
<script type="text/javascript"> function init() { <?php if ($msg != "用户名输入错误") { ?> $.fn.showWarningDialog("<?php echo $msg; ?>", "false"); <?php
                    } ?> }

            window.onload = function(){
                init();
            }; </script>
发表评论