栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > JavaScript

jquery实现简单的遮罩层

JavaScript 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jquery实现简单的遮罩层

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

一、jQuery实现遮罩层的不同样式
1.1 背景半透明遮罩层样式
需要一个黑色(当然也可以其他)背景,且须设置为绝对定位,以下是项目中用到的css样式:


#overlay {
  background: #000;
  filter: alpha(opacity=50); 
  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代码:

   
  .mask {    
      position: absolute; top: 0px; filter: alpha(opacity=60); background-color: #777;   
      z-index: 1002; left: 0px;   
      opacity:0.5; -moz-opacity:0.5;   
    }   
  

其中:opacity:0.5;适用于IE, -moz-opacit:0.5;适用于火狐;你只需要都加上,便可以火狐和IE下都可以使用。
2.指定层的高度、和宽度
js代码

 

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

html代码

  
点我显示遮罩层

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=$(' ');
 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=$(''+msg+'');
   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{
 font-size:12px;
      }  
    
    
    
  
  
    
    测试
  
  
  div遮罩
  关闭div遮罩
  全部遮罩
  

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/98916.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号