原生JS實(shí)現(xiàn)拖拽圖片效果
本文實(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í)有所幫助。
- JavaScript實(shí)現(xiàn)圖片的放大縮小及拖拽功能示例
- js實(shí)現(xiàn)使用鼠標(biāo)拖拽切換圖片的方法
- JS HTML5拖拽上傳圖片預(yù)覽
- js實(shí)現(xiàn)拖拽上傳圖片功能
- js實(shí)現(xiàn)圖片放大和拖拽特效代碼分享
- JS實(shí)現(xiàn)簡(jiǎn)易的圖片拖拽排序?qū)嵗a
- js css3實(shí)現(xiàn)圖片拖拽效果
- javascript 網(wǎng)頁(yè)編輯框及拖拽圖片的問(wèn)題
- JavaScript實(shí)現(xiàn)文字與圖片拖拽效果的方法
- 原生JS實(shí)現(xiàn)拖拽照片墻
相關(guān)文章
學(xué)習(xí)JavaScript設(shè)計(jì)模式之代理模式
這篇文章主要為大家介紹了JavaScript設(shè)計(jì)模式中的狀態(tài)模式,對(duì)JavaScript設(shè)計(jì)模式感興趣的小伙伴們可以參考一下2016-01-01重載toString實(shí)現(xiàn)JS HashMap分析
用過(guò)Java的都知道,里面有個(gè)功能強(qiáng)大的數(shù)據(jù)結(jié)構(gòu)——HashMap,它能提供鍵與值的對(duì)應(yīng)訪問(wèn)。不過(guò)熟悉JS的朋友也會(huì)說(shuō),JS里面到處都是hashmap,因?yàn)槊總€(gè)對(duì)象都提供了map[key]的訪問(wèn)形式。2011-03-03javascript判斷css3動(dòng)畫(huà)結(jié)束 css3動(dòng)畫(huà)結(jié)束的回調(diào)函數(shù)
本文主要給大家介紹的是如何使用javascript判斷CSS3動(dòng)畫(huà)效果結(jié)束,主要是使用了javascript的回調(diào)函數(shù),其思路是一旦動(dòng)畫(huà)或變換結(jié)束,回調(diào)函數(shù)就會(huì)觸發(fā)。不再需要大型類(lèi)庫(kù)支持,非常的簡(jiǎn)單實(shí)用,推薦給大家。2015-03-03url地址自動(dòng)加#號(hào)問(wèn)題說(shuō)明
# 包含了一個(gè)位置信息,默認(rèn)的錨點(diǎn)是#top 也就是網(wǎng)頁(yè)的上端,而javascript:void(0) 僅表示一個(gè)死鏈接。2010-08-08js簡(jiǎn)單實(shí)現(xiàn)圖片延遲加載的方法
這篇文章主要介紹了js簡(jiǎn)單實(shí)現(xiàn)圖片延遲加載的方法,涉及javascript針對(duì)頁(yè)面元素的遍歷與動(dòng)態(tài)設(shè)置技巧,需要的朋友可以參考下2016-07-07js 剪切板應(yīng)用clipboardData詳細(xì)解析
本篇文章主要介紹了js剪切板應(yīng)用clipboardData。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-12-12

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