Heim > Web-Frontend > js-Tutorial > Hauptteil

jquery implementiert einfache Mask-Layer_Javascript-Fähigkeiten

WBOY
Freigeben: 2016-05-16 15:20:59
Original
1399 Leute haben es durchsucht

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;
}
Nach dem Login kopieren

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;
}

Nach dem Login kopieren

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;
}

Nach dem Login kopieren

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>  
Nach dem Login kopieren
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> 
Nach dem Login kopieren

3. Fügen Sie den folgenden Code zu hinzu, und dann können Sie den Effekt sehen

HTML-Code


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

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();
           });
      }
    });
  })();
Nach dem Login kopieren
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>
Nach dem Login kopieren
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.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!