js拖拽功能元件例項

2021-09-25 07:22:55 字數 3628 閱讀 9220

本例子是基於vue編寫,拖拽元件採用的是vue draggable

左側列表不能排序,不接收其它列表資料。

右側列表接收左側的拖動資料,並轉殖左側拖動資料的副本到本身列表中。

右側列表支援排序

npm install 安裝依賴

npm run serve 啟動服務

貼出** hello.vue

="fluid container"

>

="form-group form-group-lg panel panel-default"

>

="panel-heading"

>

="panel-title"

>sortable control<

/h3>

<

/div>

="panel-body"

>

="checkbox"

>

"checkbox" v-model=

"editable"

>enable drag and drop<

/label>

<

/div>

"button"

class

="btn btn-default" @click=

"orderlist"

>sort by original order<

/button>

<

/div>

<

/div>

="col-md-3"

>

="list-group" tag=

"ul" v-model=

"list" v-bind=

"dragoptions"

:move=

"onmove" @start=

"isdragging=true" @end=

"isdragging=false"

>

"transition"

:name=

"'flip-list'"

>

="list-group-item" v-

for=

"element in list"

:key=

"element.order"

>

class

="element.fixed? 'fa fa-anchor' : 'glyphicon glyphicon-pushpin'" @click=

" element.fixed=! element.fixed" aria-hidden=

"true"

>

<

/i>

}="badge"

>

}<

/span>

<

/li>

<

/transition-group>

<

/draggable>

<

/div>

="col-md-3"

>

"span" v-model=

"list2" v-bind=

"dragoptions2"

:move=

"onmove"

>

"no"

class

="list-group" tag=

"ul"

>

="list-group-item" v-

for=

"(element,index) in list2"

:key=

"element.order + '_' + index"

>

class

="element.fixed? 'fa fa-anchor' : 'glyphicon glyphicon-pushpin'" @click=

" element.fixed=! element.fixed" aria-hidden=

"true"

>

<

/i>

}="badge"

>

}<

/span>

<

/li>

<

/transition-group>

<

/draggable>

<

/div>

="list-group col-md-3"

>

}<

/pre>

<

/div>

="list-group col-md-3"

>

}<

/pre>

<

/div>

<

/div>

<

/template>

import draggable from

"vuedraggable"

;const message =

["vue.draggable"

,"draggable"

,"component"

,"for"

,"vue.js 2.0"

,"based"

,"on"

,"sortablejs"];

export

default

,data()

;}),

list2:

, editable:

true

, isdragging:

false

, delayeddragging:

false};

},methods:);

},onmove()

},computed:

, sort:

false

, disabled:

!this

.editable,

ghostclass:

"ghost"};

},dragoptions2()

;},liststring()

,list2string()

},watch:

this

.$nexttick((

)=>);

}}};

<

/script>

.flip-list-move

.no-move

.ghost

.list-group

.list-group-item

.list-group-item i

<

/style>

計算函式dragoptions為左側列表的v-bing屬性。計算函式dragoptions2為右側列表v-bing屬性。

group: 定義了兩個列表同屬乙個分組,分組間做相互拖動。

pull: 「clone」 代表左側單元的拖動採用拷貝方式,如果不設定該值,將採用移動的方式,即左側資料元素拖動到右側列表後,左側列表中的該資料元素會消失。

put: false 代表本列表不支援外部資料拖入。

sort: false 代表本列表不支援拖動排序。

js拖拽功能

html css mod mod hd mod corner jsvar mod document.getelementbyid mod var hd document.getelementbyid hd var corner document.getelementbyid corner funct...

JS拖拽元件開發

首先,看一下拖拽的原理。被拖拽元素位置的變化,left值的變化其實就是滑鼠位置水平方向的變化值,e.clientx 滑鼠左鍵按下時e.clientx。top值的變化其實就是滑鼠位置豎直方向的變化值,e.clienty 滑鼠左鍵按下時e.clienty。另外就是設定拖拽的範圍,上下左右不得超過父元素所...

使用js實現拖拽功能

通過監聽mousemove和mouseup事件實現拖拽功能 var screenwidth document.documentelement.clientwidth var screenheight document.documentelement.clientheight document mou...