JQuery查看对话框覆盖

Man*_*noj 3 jquery plugins dom

有几个JQuery插件可以放置一个模态对话框并在对话框中显示一个dom元素.但我正在寻找一个可以显示屏幕某些部分的对话框覆盖图,这些区域应该是可访问的,而其他元素应该被阻止.

Alc*_*nja 5

我已经整理了一个简单的插件来执行此操作...不确定您的要求的范围,但它不应该太难以构建它.

基本用法如下(请注意,如果您的选择器匹配多个元素,它将只掩盖第一个元素):

$("#yourDiv").mask();
Run Code Online (Sandbox Code Playgroud)

屏蔽另一个元素将取消屏蔽其他屏蔽元素,或者您可以使用以下方法显式取消屏蔽:

$("#yourDiv").unmask();
Run Code Online (Sandbox Code Playgroud)

插件代码:

(function( $ ){
    $.fn.mask = function() {
        this.unmask();

        var totalWidth = $(document).width();
        var totalHeight = $(document).height();

        var target = this.first();
        var maskWidth = target.outerWidth();
        var maskHeight = target.outerHeight();
        var maskOffset = target.offset();

        addMask(0, 0, maskOffset.left, totalHeight);                                                                    //left
        addMask(maskOffset.left + maskWidth, 0, totalWidth - (maskOffset.left + maskWidth), totalHeight);                 //right
        addMask(maskOffset.left, 0, maskWidth, maskOffset.top);                                                         //top
        addMask(maskOffset.left, maskOffset.top + maskHeight, maskWidth, totalHeight - (maskOffset.top + maskHeight));    //bottom

        var btn = $("<input type='button' value='Cancel' class='mask' />");
        $("body").append(btn);
        btn.css({ position: "absolute", zIndex: 9999, top: (maskOffset.top + maskHeight + 5), left: (maskOffset.left + maskWidth - btn.outerWidth(true)) });
        btn.click(function() { $(this).unmask(); });

        return this;
    };
    $.fn.unmask = function() {
        $(".mask").fadeOut(function() { $(this).remove(); });
    };

    function addMask(x, y, w, h) {
        var mask = $("<div class='mask'></div>");
        mask.css({ position: "absolute", zIndex: 9999, width: w, height: h, top: y, left: x, display: "none" });
        //comment out this line & replace with css styles on 'div.mask' if you want to customise
        mask.css({ backgroundColor: "#000", opacity: 0.3, filter: "alpha(opacity=30)" });
        $("body").append(mask);
        mask.fadeIn();
        // mask.click(function() { $(this).unmask(); });
    }
})( jQuery );
Run Code Online (Sandbox Code Playgroud)

编辑:错误修复了面板尺寸,添加了淡入/淡出现在如果你点击外面你是蒙面区域,删除面具 有一个取消按钮来删除掩码.

编辑2:JsFiddle演示