最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

用html5的drag來實(shí)現(xià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)文章

  • nodejs入門詳解(多篇文章結(jié)合)

    nodejs入門詳解(多篇文章結(jié)合)

    Node.js是一套用來編寫高性能網(wǎng)絡(luò)服務(wù)器的JavaScript工具包,一系列的變化由此開始。比較獨(dú)特的是,Node.js會(huì)假設(shè)你是在POSIX環(huán)境下運(yùn)行它Linux 或 Mac OS X
    2012-03-03
  • 使用微信小程序API,調(diào)用微信的各種內(nèi)置能力。

    使用微信小程序API,調(diào)用微信的各種內(nèi)置能力。

    微信小程序如何使用小程序API,去調(diào)用微信提供的各種內(nèi)置能力(即微信API)。小程序開發(fā)框架提供豐富的微信原生API,可以方便的調(diào)起微信提供的能力,如獲取用戶信息,本地存儲(chǔ),支付功能等。
    2022-12-12
  • JS實(shí)現(xiàn)隊(duì)列與堆棧的方法

    JS實(shí)現(xiàn)隊(duì)列與堆棧的方法

    這篇文章主要介紹了JS實(shí)現(xiàn)隊(duì)列與堆棧的方法,結(jié)合實(shí)例形式分析了JavaScript實(shí)現(xiàn)隊(duì)列與堆棧的原理與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-04-04
  • js繼承實(shí)現(xiàn)方法詳解

    js繼承實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了js繼承實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了javascript繼承的實(shí)現(xiàn)方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2016-12-12
  • js獲取會(huì)話框prompt的返回值的方法

    js獲取會(huì)話框prompt的返回值的方法

    這篇文章主要介紹了js獲取會(huì)話框prompt的返回值的方法,通過一個(gè)簡單的密碼判斷實(shí)例分析了js獲取會(huì)話框prompt返回值的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-01-01
  • javascript實(shí)現(xiàn)俄羅斯方塊游戲的思路和方法

    javascript實(shí)現(xiàn)俄羅斯方塊游戲的思路和方法

    至于俄羅斯方塊的話,有很多的難點(diǎn),如果有JS去寫的話,要考慮到碰撞啊,邊界啊,下落等問題,本文這些問題大部分都有考慮到,這里給大家提供一部分思路,拋磚引玉,有需要的小伙伴可以參考下。
    2015-04-04
  • js檢測用戶輸入密碼強(qiáng)度

    js檢測用戶輸入密碼強(qiáng)度

    這篇文章主要為大家詳細(xì)介紹了js如何實(shí)現(xiàn)檢測用戶輸入密碼強(qiáng)度,從四個(gè)方面檢測用戶輸入的密碼的強(qiáng)度的,感興趣的小伙伴們可以參考一下
    2015-10-10
  • bootstrapValidator.min.js表單驗(yàn)證插件

    bootstrapValidator.min.js表單驗(yàn)證插件

    這篇文章主要為大家詳細(xì)介紹了bootstrapValidator.min.js表單驗(yàn)證插件的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • javascript讀取Xml文件做一個(gè)二級(jí)聯(lián)動(dòng)菜單示例

    javascript讀取Xml文件做一個(gè)二級(jí)聯(lián)動(dòng)菜單示例

    這篇文章主要介紹了使用javascript中讀取Xml文件做成的一個(gè)二級(jí)聯(lián)動(dòng)菜單,需要的朋友可以參考下
    2014-03-03
  • JavaScript設(shè)計(jì)模式策略模式案例分享

    JavaScript設(shè)計(jì)模式策略模式案例分享

    這篇文章主要介紹了JavaScript設(shè)計(jì)模式策略模式案例分享,策略設(shè)計(jì)模式就是指一個(gè)問題匹配多個(gè)解決方法,不一定要用到哪一個(gè),而且有可能隨時(shí)增加多個(gè)方案
    2022-06-06

最新評(píng)論

连山| 岳阳市| 晴隆县| 犍为县| 东山县| 道孚县| 汉寿县| 隆尧县| 林芝县| 南华县| 清远市| 西丰县| 林口县| 青神县| 渭南市| 上饶县| 视频| 绍兴县| 永济市| 台南县| 安吉县| 得荣县| 宜都市| 沂源县| 阳江市| 海安县| 邯郸市| 白河县| 汕头市| 泰安市| 乌拉特中旗| 青田县| 绥芬河市| 杭锦后旗| 乐业县| 平潭县| 成安县| 鄂托克前旗| 伊宁市| 新巴尔虎右旗| 阿鲁科尔沁旗|