A5下载 - 努力做内容最丰富最安全的下载站!

A5站长下载站

当前位置:A5下载 > 编程开发 > 网站开发 > jquery实现简单的遮罩层

jquery实现简单的遮罩层

时间:2016-01-09 09:37作者:fang人气:294

本文实例讲解了jquery遮罩层,包括遮罩层的不同样式实现、mask实现遮罩层等,分享给大家供大家参考,具体内容如下

一、jQuery实现遮罩层的不同样式

1.1 背景半透明遮罩层样式

需要一个黑色(当然也可以其他)背景,且须设置为绝对定位,以下是项目中用到的css样式:

/* 半透明的遮罩层 */

#overlay {

background: #000;

filter: alpha(opacity=50); /* IE的透明度 */

opacity: 0.5; /* 透明度 */

display: none;

position: absolute;

top: 0px;

left: 0px;

width: 100%;

height: 100%;

z-index: 100; /* 此处的图层要大于页面 */

display:none;

}

1.2 jQuery实现遮罩

/* 显示遮罩层 */

function showOverlay() {

$("#overlay").height(pageHeight());

$("#overlay").width(pageWidth());

// fadeTo第一个参数为速度,第二个为透明度

// 多重方式控制透明度,保证兼容性,但也带来修改麻烦的问题

$("#overlay").fadeTo(200, 0.5);

}

/* 隐藏覆盖层 */

function hideOverlay() {

$("#overlay").fadeOut(200);

}

/* 当前页面高度 */

function pageHeight() {

return document.body.scrollHeight;

}

/* 当前页面宽度 */

function pageWidth() {

return document.body.scrollWidth;

}

1.3 提示框

遮罩的目的无非让人无法操作内容,突出提示框,而提示框可参考上面的制作,z-index比遮罩层更高便可。主要问题是,如何控制提示框在浏览器居中。

/* 定位到页面中心 */

function adjust(id) {

var w = $(id).width();

var h = $(id).height();

var t = scrollY() + (windowHeight()/2) - (h/2);

if(t < 0) t = 0;

var l = scrollX() + (windowWidth()/2) - (w/2);

if(l < 0) l = 0;

$(id).css({left: l+'px', top: t+'px'});

}

//浏览器视口的高度

function windowHeight() {

var de = document.documentElement;

return self.innerHeight || (de && de.clientHeight) || document.body.clientHeight;

}

//浏览器视口的宽度

function windowWidth() {

var de = document.documentElement;

return self.innerWidth || (de && de.clientWidth) || document.body.clientWidth

}

/* 浏览器垂直滚动位置 */

function scrollY() {

var de = document.documentElement;

return self.pageYOffset || (de && de.scrollTop) || document.body.scrollTop;

}

/* 浏览器水平滚动位置 */

function scrollX() {

var de = document.documentElement;

return self.pageXOffset || (de && de.scrollLeft) || document.body.scrollLeft;

}

二、Jquery超简单遮罩层实现代码

在开发中,为了避免二次提交,遮罩层的运用越来越普遍

看了很多代码,下面跟大家分享一下我认为最简单的遮罩层实现方式:

1.样式如下设置:

CSS代码:


<style type="text/css">

.mask {

position: absolute; top: 0px; filter: alpha(opacity=60); background-color: #777;

z-index: 1002; left: 0px;

opacity:0.5; -moz-opacity:0.5;

}

</style>

其中:opacity:0.5;适用于IE, -moz-opacit:0.5;适用于火狐;你只需要都加上,便可以火狐和IE下都可以使用。

2.指定层的高度、和宽度

js代码

<pre class="html" name="code"><script type="text/javascript">

//兼容火狐、IE8

//显示遮罩层

function showMask(){

$("#mask").css("height",$(document).height());

$("#mask").css("width",$(document).width());

$("#mask").show();

}

//隐藏遮罩层

function hideMask(){

$("#mask").hide();

}

</script>

3.在<body>中加入如下代码,然后就可以看到效果

html代码

<div id="mask" class="mask"></div>

<a href="javascript:;" onclick="showMask()" >点我显示遮罩层</a><br />

4.使用方法

在ajax提交表单后,加上showMask方法,数据返回后,加上hideMask()

需要的亲们可以根据自己需求,在遮罩层上面加一些提示信息

三、发布个JQuery的遮罩层实现(mask)

用过ExtJs的可能知道在ExtJs中集成了很多的UI元素可以很方便我们的使用。其中有mask()和unmask()这两个方法,这两个方法在指定的元素上添加一个遮罩层和一个提示消息实现,增加客户体验。由于最近做项目的时候,发现有时为了使用这一两个方法需要引入一个比较“庞大”的Extjs进来,觉得有点不划算,于是自己用jquery实现了一个比较简单mask、unmask方法来实现该效果。大家知道jquery是一个优秀的javascript框架,不但体积小而且使用方便,我现在逐渐将系统中使用Extjs实现的代码或组建全部更换成Jquery来实现。好了不多说,上我的代码,这些代码是根据网上的一位朋友实现的documentMask基础上进行整改的,使用上更加灵活方便了。

(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();

}

// 创建一个 Mask 层,追加到对象中

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();

});

}

});

})();

下面是使用实例代码可供参考

<html>

<head>

<style>

body{

font-size:12px;

}

</style>

<script src="jquery-1.3.2.js" type="text/javascript"></script>

<script type="text/javascript">

(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();

}

// 创建一个 Mask 层,追加到对象中

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();

});

}

});

})();

</script>

</head>

<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()">关闭div遮罩</a>

<a href="#" onclick="$(document).mask('全屏遮罩').click(function(){$(document).unmask()})">全部遮罩</a>

</body>

</html>

以上就是jquery实现遮罩层的全部内容介绍,希望对大家的学习有所帮助。 

标签jquery,实现,简单,遮罩层,本文,实例,解了,jque

相关下载

查看所有评论+

网友评论

网友
您的评论需要经过审核才能显示

公众号