Heim  >  Artikel  >  Web-Frontend  >  jquery implementiert einfache Mask-Layer_Javascript-Fähigkeiten

jquery implementiert einfache Mask-Layer_Javascript-Fähigkeiten

WBOY
WBOYOriginal
2016-05-16 15:20:591400Durchsuche

In diesem Artikel wird die JQuery-Maskenebene anhand von Beispielen erläutert, einschließlich verschiedener Stile der Maskenebenenimplementierung, der Maskenebenenimplementierung usw. Der spezifische Inhalt lautet wie folgt

1. jQuery implementiert verschiedene Stile von Maskenebenen
1.1 Ebenenstil der durchscheinenden Hintergrundmaske Ein schwarzer (oder anderer) Hintergrund ist erforderlich und muss auf absolute Positionierung eingestellt sein. Der folgende CSS-Stil wird im Projekt verwendet:

/* 半透明的遮罩层 */
#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 zur Implementierung der Maske

/* 显示遮罩层 */
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 Eingabeaufforderungsfeld
Der Zweck der Maske besteht darin, die Bedienung des Inhalts und die Hervorhebung des Eingabeaufforderungsfelds zu verhindern. Der Z-Index kann höher als die Maskenebene sein. Die Hauptfrage ist, wie man steuert, dass das Eingabeaufforderungsfeld im Browser zentriert wird.

/* 定位到页面中心 */
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;
}

2. Jquery supereinfacher Maskenebenen-Implementierungscode
Um eine sekundäre Einreichung zu vermeiden, werden in der Entwicklung immer häufiger Maskenebenen verwendet
Nachdem ich viel Code gelesen habe, werde ich Ihnen mitteilen, was meiner Meinung nach der einfachste Weg ist, die Maskenebene zu implementieren:

1. Der Stil wird wie folgt eingestellt:
CSS-Code:

<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>  
Darunter: opacity:0.5; ist für IE geeignet, -moz-opacit:0.5 ist für Firefox geeignet und kann sowohl in Firefox als auch im IE verwendet werden.


2. Geben Sie die Höhe und Breite der Ebene an
JS-Code

<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. Fügen Sie den folgenden Code zu 6c04bd5ca3fcae76e30b72ad730ca86d hinzu, und dann können Sie den Effekt sehen

HTML-Code


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

4. So verwenden Sie
Nachdem Ajax das Formular übermittelt hat, fügen Sie die showMask-Methode hinzu, und nachdem die Daten zurückgegeben wurden, fügen Sie hideMask() hinzu
Wer es braucht, kann je nach Bedarf einige prompte Informationen zur Maskenebene hinzufügen

3. Geben Sie eine JQuery-Maskenebenenimplementierung (Maske) frei

Wer ExtJs verwendet hat, weiß vielleicht, dass viele UI-Elemente in ExtJs integriert sind, was für uns sehr praktisch ist. Es gibt zwei Methoden, mask() und unmask(), die dem angegebenen Element eine Maskenebene und eine Eingabeaufforderung hinzufügen, um das Kundenerlebnis zu verbessern. Als ich kürzlich an einem Projekt arbeitete, stellte ich fest, dass ich manchmal, um diese beiden Methoden verwenden zu können, ein relativ „großes“ Extjs einführen musste, was meiner Meinung nach etwas unwirtschaftlich war, also habe ich JQuery verwendet, um eine relativ einfache Maske zu implementieren und Demaskierungsmethode, um diesen Effekt zu erzielen. Jeder weiß, dass Jquery ein hervorragendes Javascript-Framework ist, das nicht nur klein ist, sondern auch einfach zu verwenden ist. Jetzt ersetze ich nach und nach alle mit Extjs implementierten Codes oder Komponenten im System. Okay, ohne weitere Umschweife, hier sind meine Codes, die auf der von einem Freund im Internet implementierten documentMask basieren, wodurch sie flexibler und benutzerfreundlicher werden.


(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();
           });
      }
    });
  })();
Das Folgende ist der Anwendungsbeispielcode als Referenz


<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>
Das Obige ist die vollständige Einführung in die Implementierung der Maskenebene in JQuery. Ich hoffe, dass es für das Lernen aller hilfreich sein wird.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn