JS拖拽元件開發

2021-07-27 13:32:31 字數 1588 閱讀 5623

首先,看一下拖拽的原理。 

被拖拽元素位置的變化,left值的變化其實就是滑鼠位置水平方向的變化值,e.clientx - 滑鼠左鍵按下時e.clientx。 

top值的變化其實就是滑鼠位置豎直方向的變化值,e.clienty - 滑鼠左鍵按下時e.clienty。 

另外就是設定拖拽的範圍,上下左右不得超過父元素所在的區域。

function drag (config)else            

this.lock = true;

}drag.prototype

.getstyle = function(element, attr)else

}drag.prototype

.modown = function(e);

drag.prototype

.momove = function(e)

if(!this.lock)

};drag.prototype

.moup = function(e);

drag.prototype

.startdrag = function().bind(this);

this.movetarget

.onmousemove = function(e).bind(this);

this.movetarget

.onmouseup = function(e).bind(this);

}

說明:modown響應滑鼠左鍵按下操作,momove響應滑鼠移動操作,moup響應滑鼠抬起操作。

在momove中增加了e.which判斷,e.which ==1 表示滑鼠左鍵按下,這是為了解決,滑鼠移除可拖拽範圍外,再移回時,無需按下左鍵,被拖拽元素就會跟著動的bug。

使用說明:

在使用時,被拖拽元素的id是必須引數,父元素的id(即可以拖拽移動的範圍)為可選引數,如果不傳遞父元素的id,則預設使用documentelement為可拖拽的範圍。

如果傳遞父元素,請別忘了將父元素的定位設為position:relative或position:absolute。

在使用時,先引入拖拽外掛程式的js檔案。

lang="en">

charset="utf-8">

name="generator"

content="editplus®">

name="author"

content="劉艷">

name="keywords"

content="關鍵字">

name="description"

content="描述">

documenttitle>

* #content

#drag

style>

head>

id = "content">

id = "drag" >

div>

div>

body>

html>

js拖拽功能元件例項

本例子是基於vue編寫,拖拽元件採用的是vue draggable 左側列表不能排序,不接收其它列表資料。右側列表接收左側的拖動資料,並轉殖左側拖動資料的副本到本身列表中。右側列表支援排序 npm install 安裝依賴 npm run serve 啟動服務 貼出 hello.vue fluid ...

Vue拖拽元件開發例項詳解

為什麼選擇vue?主要原因 對於前端開發來說,相容性是我們必須要考慮的問題之一。我們的專案不需要相容低版本瀏覽器。專案本身也是乙個資料驅動型的。加之,vue本身具有以下主要特性 使用虛擬dom 輕量級框架 高效的資料繫結 靈活的元件系統 完整的開發生態鏈。這就是我們為什麼選擇vue框架的一些原因。為...

JS元件開發

看了一篇關於寫js元件開發的部落格,居然看不懂,雖然我前幾天覺得自己把原型那塊弄的非常懂,但是看到上面實際應用的 時,還是一臉懵逼,不知道如何下面的呼叫這個元件的方式為何是這樣,我就寫了下面的乙個小例子 而且呢,你一定要搞清楚this的指向問題,在這裡this都是指向建構函式textcountfun...