Heim > Web-Frontend > js-Tutorial > Native JS realisiert Drag-and-Drop-Bildeffekt_Javascript-Fähigkeiten

Native JS realisiert Drag-and-Drop-Bildeffekt_Javascript-Fähigkeiten

WBOY
Freigeben: 2016-05-16 15:16:41
Original
2362 Leute haben es durchsucht

Das Beispiel in diesem Artikel erklärt den detaillierten Code von JS, um den Drag-and-Drop-Bildeffekt zu erzielen, und teilt ihn als Referenz mit Ihnen. Der spezifische Inhalt ist wie folgt

Der Unterschied zwischen clientX, offsetX, screenX, pageX des

Javascript-Ereignisobjekts:

Es gibt Kompatibilitätsprobleme bei der Verwendung von HTML5-Drag zum Implementieren von Drag & Drop und es gibt viele Codes für die Verwendung von Drag & Drop-Plug-Ins, aber diese Drag & Drop-Demo enthält weniger Code und ist kompatibel mit alle Browser. Es lohnt sich, es in Projekten zu verwenden,

Der CSS-Stil ist wie folgt:
  #div1{ 
    width: 100px; height: 100px; 
    background-color: #4D4D4D; 
    position: absolute; cursor: pointer; 
    -webkit-box-shadow: 3px 3px 0px 3px #C7C7C7; 
    box-shadow: 3px 3px 3px 0px #C7C7C7; 
  }
  #parent{ 
    width: 500px; height: 500px; 
    border: 1px solid #CDCDCD; 
    position: relative; margin: 0 auto;  //父级元素设置为:
    background-color: #F4F4F4; 
  }
  .postText{
    width: 500px; height: 30px;margin: 0 auto; background-color: #F4F4F4;
  }
  .postText span{ 
   padding:0px 10px;
  }
Nach dem Login kopieren

Der HTML-Code lautet wie folgt:
<div id="parent">
  <div id="div1" onmousemove="posMove(this.id)"></div>
</div>
<div class="postText">
  移动的距离Top:<span id="posTop"></span>Left:<span id="posLeft"></span>
</div>
Nach dem Login kopieren

JS-Code und Kommentare lauten wie folgt
function posMove(getdivid) {
    var oDiv = document.getElementById(getdivid);
    var oParent = document.getElementById('parent');
    var sent = {
      l: 10, //设置div在父元素的活动范围,10相当于给父div设置padding-left:10;
      r: oParent.offsetWidth - oDiv.offsetWidth, // offsetWidth:当前对象的宽度, offsetWidth = width+padding+border
      t: 10,
      b: oParent.offsetHeight - oDiv.offsetHeight,
      n: 10
    }
    drag(oDiv, sent); 
  }
  
  /**
   *
   * @param obj:被拖动的div
   * @param sent :设置div在容器中可以被拖动的区域
   */
  function drag(obj,sent){

    var dmW = document.documentElement.clientWidth || document.body.clientWidth;
    var dmH = document.documentElement.clientHeight || document.body.clientHeight;

    var sent = sent || {};
    var l = sent.l || 0;
    var r = sent.r || dmW - obj.offsetWidth;
    var t = sent.t || 0;
    var b = sent.b || dmH - obj.offsetHeight;
    var n = sent.n || 10;

    obj.onmousedown = function (ev){
      var oEvent = ev || event;
      var sentX = oEvent.clientX - obj.offsetLeft;
      var sentY = oEvent.clientY - obj.offsetTop;

      document.onmousemove = function (ev){
        var oEvent = ev || event;

        var slideLeft = oEvent.clientX - sentX;
        var slideTop = oEvent.clientY - sentY;

        if(slideLeft <= l){
          slideLeft = l;
        }
        if(slideLeft >= r){
          slideLeft = r;
        }
        if(slideTop <= t){
          slideTop = t;
        }
        if(slideTop >= b){
          slideTop = b;
        }

        obj.style.left = slideLeft + 'px';
        obj.style.top = slideTop + 'px';

        document.getElementById('posTop').innerHTML = slideTop;
        document.getElementById('posLeft').innerHTML = slideLeft;

      };
      document.onmouseup = function (){
        document.onmousemove = null;
        document.onmouseup = null;
      }

      return false;
    }
  }  
Nach dem Login kopieren

Das Obige ist der Implementierungscode für den Drag-and-Drop-Effekt von js. Ich hoffe, er wird für das Lernen aller hilfreich sein.
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