`
liumayulingyan
  • 浏览: 155869 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

遮罩层实现

 
阅读更多
http://www.oschina.net/code/snippet_98719_7689
http://hi.baidu.com/bluelotus7/item/b8f467f4e3a982dd6225d269


        (function () {
            $.extend($.fn, {
                mask:function (msg, maskDivClass) {
                    this.unmask();
                    var op = {
                        opacity:0.8,
                        z:10000,
                        bgcolor:'#ccc'
                    };
                    var original = $(document.body);
                    var position = { top:0, left:0 };
                    if (this[0] && this[0] !== window.document) {
                        original = this;
                        position = original.position();
                    }
                    var maskDiv = $('<div class="maskdivgen"> </div>');
                    maskDiv.appendTo(original);
                    var maskWidth = original.outerWidth();
                    if (!maskWidth) {
                        maskWidth = original.width();
                    }
                    var maskHeight = original.outerHeight();
                    if (!maskHeight) {
                        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
                    });

                    if (maskDivClass) {
                        maskDiv.addClass(maskDivClass);
                    }

                    if (msg) {
                        var msgDiv = $('<div style="position:absolute;border:#6593cf 1px solid; padding:2px;background:#ccca"><div style="line-height:24px;border:#a3bad9 1px solid;background:white;padding:2px 10px 2px 10px">' + msg + '</div></div>');
                        msgDiv.appendTo(maskDiv);
                        var widthspace = (maskDiv.width() - msgDiv.width());
                        var heightspace = (maskDiv.height() - msgDiv.height());
                        msgDiv.css({
                            cursor:'wait',
                            top:(heightspace / 2 - 2),
                            left:(widthspace / 2 - 2)
                        });

                    }

                    maskDiv.fadeIn('fast', function () {
                        $(this).fadeTo('slow', op.opacity);
                    })
                    return maskDiv;

                },

                unmask:function () {
                    var original = $(document.body);
                    if (this[0] && this[0] !== window.document) {
                        original = $(this[0]);
                    }
                    original.find("> div.maskdivgen").fadeOut('slow', 0, function () {
                        $(this).remove();
                    });
                }
            });
        })();


<body style="width: 100%">
测试
<div id="test" style="width: 200px; height: 100px; border: black 1px solid;">
</div>

<a href="#" onclick="$('#test').mask('DIV层遮罩')">div层遮罩</a>
<a href="#" onclick="$('#test').unmask()">关闭遮罩</a>
<a href="#" onclick="$(document).mask('全部遮罩').click(function(){$(document).unmask()})">全部遮罩</a>

</body>


-------------------------------------


/* 
 *  Document   : mask 1.1
 *  Created on : 2011-12-11, 14:37:38
 *  Author     : GodSon
 *  Email      : wmails@126.com
 *  Link       : www.btboys.com 
 *  
 */
 
(function($){
    function init(target,options){
        var wrap = $(target);
		if($("div.mask",wrap).length) wrap.mask("hide");
		
        wrap.attr("position",wrap.css("position"));
		wrap.attr("overflow",wrap.css("overflow"));
        wrap.css("position", "relative");
		wrap.css("overflow", "hidden");
        
        var maskCss = {
            position:"absolute",
            left:0,
            top:0,
			cursor: "wait",
            background:"#ccc",
            opacity:options.opacity,
            filter:"alpha(opacity="+options.opacity*100+")",
            display:"none"
        };
        
        var maskMsgCss = {
            position:"absolute",
            width:"auto",
            padding:"10px 20px",
            border:"2px solid #ccc",
            color:"white",
			cursor: "wait",
            display:"none",
            borderRadius:5,
            background:"black",
            opacity:0.6,
            filter:"alpha(opacity=60)"
        };
		var width,height,left,top;
		if(target == 'body'){
			width = Math.max(document.documentElement.clientWidth, document.body.clientWidth);
			height = Math.max(document.documentElement.clientHeight, document.body.clientHeight);
		}else{
			width = wrap.outerWidth() || "100%";
			height = wrap.outerHeight() || "100%";
		}
        $('<div class="mask"></div>').css($.extend({},maskCss,{
            display : 'block',
            width : width,
            height : height,
            zIndex:options.zIndex
        })).appendTo(wrap);

		var maskm= $('<div class="mask-msg"></div>').html(options.maskMsg).appendTo(wrap).css(maskMsgCss);
		
		if(target == 'body'){
			left = (Math.max(document.documentElement.clientWidth,document.body.clientWidth) - $('div.mask-msg', wrap).outerWidth())/ 2;
			if(document.documentElement.clientHeight > document.body.clientHeight){
				top = (Math.max(document.documentElement.clientHeight,document.body.clientHeight)  - $('div.mask-msg', wrap).outerHeight())/ 2;
			}else{
				top = (Math.min(document.documentElement.clientHeight,document.body.clientHeight)  - $('div.mask-msg', wrap).outerHeight())/ 2;
			}
			
		}else{
			left = (wrap.width() - $('div.mask-msg', wrap).outerWidth())/ 2;
			top = (wrap.height() - $('div.mask-msg', wrap).outerHeight())/ 2;
		}
		
        maskm.css({
            display : 'block',
            zIndex:options.zIndex+1,
            left : left,
            top :  top
        });
        
        setTimeout(function(){
            wrap.mask("hide");
        }, options.timeout);
            
        return wrap;
    }
       
    $.fn.mask = function(options){   
        if (typeof options == 'string'){
            return $.fn.mask.methods[options](this);
        }
        options = $.extend({}, $.fn.mask.defaults,options);
        return init(this,options);
    };
    $.mask = function(options){  
        if (typeof options == 'string'){
            return $.fn.mask.methods[options]("body");
        }
        options = $.extend({}, $.fn.mask.defaults,options);
        return init("body",options);
    };
	
	$.mask.hide = function(){
		$("body").mask("hide");
	};
	
    $.fn.mask.methods = {
        hide : function(jq) {
            return jq.each(function() {
                var wrap = $(this);
                $("div.mask",wrap).fadeOut(function(){
                    $(this).remove();
                });
                $("div.mask-msg",wrap).fadeOut(function(){
                    $(this).remove();
                    wrap.css("position",  wrap.attr("position"));
					wrap.css("overflow", wrap.attr("overflow"));
                });
            });
        }
    };
    
    $.fn.mask.defaults = {
        maskMsg:'\u52a0\u8f7d……',
        zIndex:100000,
        timeout:30000,
        opacity:0.6
    };
})(jQuery);
分享到:
评论

相关推荐

    (HTML+js+css)遮罩层实现源码

    遮罩层实现 &lt;!-- 页面主要内容 --&gt; &lt;div id="mask"&gt;&lt;/div&gt; &lt;span&gt;Loading... &lt;!-- 模态窗口内容 --&gt; &lt;script src="overlay.js"&gt;&lt;/script&gt; ``` 接下来是CSS部分。`#mask`是遮罩层元素,...

    卫班科技---HTML+CSS遮罩层实现案例

    遮罩层通常用于弹出窗口、提示信息或者加载动画,它能在不影响页面主要内容的情况下,向...无论你是初学者还是经验丰富的开发者,都值得深入研究卫班科技的这个遮罩层实现案例,从中汲取灵感并应用于自己的项目之中。

    遮罩层实现Litebox

    "Litebox"是一个轻量级的遮罩层实现,它是对原始的Lightbox的简化版本,适用于那些希望减少页面加载时间的项目。 Litebox主要利用JavaScript库moo.fx和prototype-lite来实现其功能。moo.fx是一个小型的、可扩展的...

    winform实现遮罩层效果

    下面将详细讲解如何在Winform中实现遮罩层效果。 首先,理解遮罩层的基本概念。遮罩层是覆盖在主窗口之上的一层半透明控件,它不参与程序的主要逻辑处理,而是起到视觉上的隔离作用。通常,我们可以通过创建一个新...

    qt5 遮罩背景 灰色遮罩层实现

    在Qt5中,实现一个半透明的灰色遮罩层,主要涉及到窗口管理、自定义控件和绘图技术。这个过程通常分为以下几个步骤: 1. **理解Qt窗口系统**: Qt提供了一种灵活的窗口管理系统,允许开发者创建各种复杂的用户界面...

    HTML遮罩层实现源码

    本示例提供了HTML、JavaScript(JS)和CSS代码,以及可能包含的图片资源,来帮助你理解如何在网页中实现一个功能齐全的遮罩层。 首先,我们从HTML结构开始。一个简单的遮罩层通常包含一个主要的容器元素,如`div`,...

    用遮罩层实现登录页面

    主要功能是在页面点击“用户登录”,就在当前页面弹出用户登窗口。 这里是用“遮罩层”来实现的。界面也是自己做的。 里面有相应的登录界面的素材。在页面的布局上,你查看本例,也可以学习到很多关于css的知识。

    页面点击按钮后出现遮罩层,遮罩层上面有其他内容可显示,包含关闭遮罩层按钮

    页面点击按钮后出现遮罩层,遮罩层上面有其他内容可显示,包含关闭遮罩层按钮。...所以选择弹出层,一层遮罩层,一层显示详情层,遮罩层的好处可以让用户在看详情的时候不能操作页面其他位置,防止页面出现错误。

    Cocos2d-x 3.x版本遮罩层 实现捕鱼达人金币表盘效果

    在Cocos2d-x 3.x版本中,为了实现类似捕鱼达人中的金币表盘效果,我们需要利用遮罩层(Mask Layer)技术。遮罩层是一种图形处理技术,它允许我们只显示特定区域内的图像,而隐藏其他部分。在这个场景中,我们将通过...

    微信判断浏览器自动弹出遮罩层代码

    2. **遮罩层实现**:遮罩层通常用于在页面上显示半透明的背景,以突出显示某个部分或阻止用户与页面其余部分交互。可以使用CSS和HTML创建一个简单的遮罩层,如下: ```html &lt;div id="mask"&gt;&lt;/div&gt; ``` ```css #...

    JavaScript弹出遮罩层

    在这个场景中,我们看到一个经过修改的遮罩层实现,它可以通过链接触发,并指定弹出的内容页面。 首先,`showdiv.htm`很可能是遮罩层显示的主体部分,它可能包含HTML结构,如一个全屏的div,具有透明度设置,以及...

    遮罩层(多个实现的例子)/js/div

    总结来说,本示例提供的遮罩层实现主要展示了如何利用`div`元素和JavaScript进行动态页面交互设计。通过学习这些例子,开发者可以了解如何在自己的项目中实现类似的遮罩层效果,提高网页的用户体验。同时,这也是对...

    微信小程序--遮罩层

    3. `wx.createSelectorQuery()` 和 `wx.createIntersectionObserver()`: 用于查询或监听组件的布局信息,可以配合自定义遮罩层实现更复杂的交互逻辑。 4. 自定义组件:如果你需要更复杂的遮罩层效果,可以创建自定义...

    Bootstrap实现遮罩层

    Bootstrap实现遮罩层 参考文档: http://blog.csdn.net/u014175572/article/details/51800168 Bootstrap实现遮罩层 参考文档: http://blog.csdn.net/u014175572/article/details/51800168 Bootstrap实现遮罩层 ...

    jQuery遮罩层实现方法实例详解(附遮罩层插件)

    在开发Web应用时,我们常常需要一种方式来阻止用户与页面的某些部分进行交互,同时提供一些反馈信息,比如加载进度、信息提示等。遮罩层(Mask Layer)就是实现...以上内容共同构成了一个完整、实用的遮罩层实现方案。

    遮罩层效果(最新),简单易用

    "遮罩层效果(最新),简单易用"这个标题表明我们将探讨一种最新的、易于实施的遮罩层实现方法。这种效果能够覆盖在网页内容上,通常具有半透明背景,使得用户对主要信息或操作有更集中的注意力。 描述中提到"兼容...

    WinForm特效之桌面上的遮罩层实现方法

    本文实例讲述了WinForm特效之桌面上的遮罩层实现方法,分享给大家供大家参考之用。具体如下: 这个一个窗体特效,可以帮你了解几个windows api函数。 效果:windows桌面上增加一个简单的遮罩层,其中WS_EX_...

    【不下载就后悔系列】js特效之遮罩层的巧妙应用

    通过学习和实践这个“不下载就后悔系列”的js特效之遮罩层应用,你不仅可以掌握基本的遮罩层实现,还能了解到如何通过JavaScript和jQuery库来增强网页的动态性和交互性。这将对你的前端开发技能有着显著的提升,助你...

    css+js实现部分区域高亮可编辑遮罩层.docx

    "css+js实现部分区域高亮可编辑遮罩层" 本文主要介绍了使用css和js实现部分区域高亮可编辑遮罩层的方法。该方法使用javascript和css来实现遮罩层的效果,遮罩层可以高亮显示指定区域,并且可以编辑该区域。 知识点...

    Cocos2d-x遮罩层 实现捕鱼达人金币表盘效果

    在Cocos2d-x游戏开发中,为了实现各种丰富的视觉效果,开发者经常需要用到遮罩层(Mask Layer)技术。本教程将重点讲解如何利用Cocos2d-x的遮罩层功能来实现捕鱼达人游戏中金币表盘的效果。这个效果通常包括一个动态...

Global site tag (gtag.js) - Google Analytics