欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

原生JS實(shí)現(xiàn)拖拽圖片效果

 更新時(shí)間:2020年08月27日 09:10:24   作者:shde  
這篇文章主要為大家詳細(xì)介紹了原生JS實(shí)現(xiàn)拖拽圖片效果,JS實(shí)現(xiàn)圖標(biāo)圖拖拽,拖拽的過(guò)程中不斷輸出該div的left、top值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家講解了JS實(shí)現(xiàn)拖拽圖片效果的詳細(xì)代碼,分享給大家供大家參考,具體內(nèi)容如下

javascript event 對(duì)象的clientX,offsetX,screenX,pageX的區(qū)別:

用html5的drag來(lái)實(shí)現(xiàn)拖拽有兼容性問(wèn)題,使用拖拽插件代碼又很多,而這個(gè)拖拽demo代碼少,并且兼容所有瀏覽器,很值得在項(xiàng)目中使用,

css樣式如下:

 #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; //父級(jí)元素設(shè)置為:
  background-color: #F4F4F4; 
 }
 .postText{
  width: 500px; height: 30px;margin: 0 auto; background-color: #F4F4F4;
 }
 .postText span{ 
  padding:0px 10px;
 }

html代碼如下:

<div id="parent">
 <div id="div1" onmousemove="posMove(this.id)"></div>
</div>
<div class="postText">
 移動(dòng)的距離Top:<span id="posTop"></span>Left:<span id="posLeft"></span>
</div>

js代碼及注釋如下

function posMove(getdivid) {
  var oDiv = document.getElementById(getdivid);
  var oParent = document.getElementById('parent');
  var sent = {
   l: 10, //設(shè)置div在父元素的活動(dòng)范圍,10相當(dāng)于給父div設(shè)置padding-left:10;
   r: oParent.offsetWidth - oDiv.offsetWidth, // offsetWidth:當(dāng)前對(duì)象的寬度, offsetWidth = width+padding+border
   t: 10,
   b: oParent.offsetHeight - oDiv.offsetHeight,
   n: 10
  }
  drag(oDiv, sent); 
 }
 
 /**
  *
  * @param obj:被拖動(dòng)的div
  * @param sent :設(shè)置div在容器中可以被拖動(dòng)的區(qū)域
  */
 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;
  }
 } 

以上就是關(guān)于js拖拽效果的實(shí)現(xiàn)代碼,希望對(duì)大家的學(xué)習(xí)有所幫助。

相關(guān)文章

  • Javascript調(diào)用函數(shù)方法的幾種方式介紹

    Javascript調(diào)用函數(shù)方法的幾種方式介紹

    這篇文章主要介紹了Javascript調(diào)用函數(shù)方法的幾種方式介紹,本文講解了func()、(function(arg){})(window)、func.bind(sth)()、func.call()、func.apply()等5種方式,需要的朋友可以參考下
    2015-03-03
  • 最新評(píng)論