vue-drag-resize 全解简珠,vue拖拽縮放組件

vue-drag-resize是一個支持拖拽與縮放的vue插件,支持vue 1.x與2.x摘盆,使用方便,上手便利饱苟,具有以下的幾個特征:

特征

輕量級孩擂,無依賴性

所有的操作都是可聯(lián)動的

支持觸摸事件

定義元素可拖拽,或者可縮放箱熬,或者二者兼有

提供用于調(diào)整大小的操作點與操作框

可以按照比例縮放或者不按照比例縮放元素

可限制拖拽的最大與最小值类垦、拖拽的范圍是否超出其父元素

可限制拖動的方向為垂直或水平軸

gitHib地址:?github.com/kirillmuras…

用法

$ npm i -s vue-drag-resize

注冊為全局組件狈邑,在vue項目中注冊:

import Vue from 'vue' import VueDragResize from 'vue-drag-resize' Vue.component('vue-drag-resize', VueDragResize) 在任何組件中使用的時候,不用引入直接蚤认;

<vue-drag-resize:isActive = 'true'>

在需要的組件中引入:

? <template>

importVueDragResizefrom'vue-drag-resize';

exportdefault{

name:'app',

components: {

? ? ? ? ? VueDragResize

? ? ? },

? }

復(fù)制代碼

屬性

isActive 是否激活狀態(tài)

Type: Boolean || Required: false || Default: false

處于激活狀態(tài)的組件才能進行拖拽與縮放等操作米苹,狀態(tài)呈現(xiàn)激活狀態(tài)

isDraggable 是否允許拖拽

Type: Boolean || Required: false || Default: true

isResizable 是否允許縮放

Type: Boolean || Required: false || Default: true

aspectRatio 是否等比例縮放

Type: Boolean || Required: false || Default: false

設(shè)置為true,則會按照元素的元比例縮放砰琢≌核唬坑:定義了這個屬性,發(fā)現(xiàn)重新設(shè)置寬高的時候出現(xiàn)了異常(新值比例不同于舊值)陪汽,需要在重設(shè)寬高的時候把aspectRatio設(shè)置為false训唱,再將其設(shè)置回去,才能保證新值的等比例

w 組件寬度

Type: Number || Required: false || Default: 200

h 組件高度

Type: Number || Required: false || Default: 200

minw 最小寬度

Type: Number || Required: false || Default: 50

注意挚冤,不能設(shè)置為0况增,因為這個組件里面屬性要求大于0

minh 最小高度

Type: Number || Required: false || Default: 50

注意,不能設(shè)置為0训挡,因為這個組件里面屬性要求大于0

x 定位left

Type: Number || Required: false || Default: 0

y 定位top

Type: Number || Required: false || Default: 0

z 層級

Type: Number || Required: false || Default: auto

注意在元素激活的時候澳骤,z會被設(shè)置為最高的,所以在管理z的時候要注意

sticks 元素縮放的節(jié)點定義

Type: Array || Required: false || Default: ['tl', 'tm', 'tr', 'mr', 'br', 'bm', 'bl', 'ml']

tl -Topleft

tm -Topmiddle

tr-Topright

mr - Middleright

br-Bottomright

bm -Bottommiddle

bl -Bottomleft

ml - Middleleft

復(fù)制代碼

preventActiveBehavior 單擊組件外區(qū)域來禁止組件行為

Type: Boolean || Required: false || Default: false

設(shè)置這個屬性true澜薄,就可以解決在其他區(qū)域操作返回到組件區(qū)域的時候为肮,不需要再次點擊就激活組件

parentLimitation 是否超出父級元素

Type: Boolean || Required: false || Default: false

設(shè)置為true,則限制操作組件不能超出父級元素

parentW 父級寬度

Type: Number || Required: false || Default: 0

該值限制了元素可以拖動的水平最大寬度弥锄,前提是parentLimitation=true

parentH 父級高度

Type: Number || Required: false || Default: 0

該值限制了元素可以拖動的水平最大高度籽暇,前提是parentLimitation=true

parentScaleX

Type: Number || Required: false || Default: 1

parentScaleY

Type: Number || Required: false || Default: 1

axis 允許拖拽的方向,

Type: String || Required: false || Default: both

取值可以為x饭庞、 y、 both绸狐、none

dragHandle 定義拖拽時的classname

Type: String || Required: false

dragCancel 定義取消拖拽時的classname

Type: String || Required: false

事件

clicked 組件點擊事件

Required: false || Parameters: 組件實例

activated 點擊組件外事件

Required: false || Parameters: 無

resizing 縮放時事件

Required: false || Parameters: object

{

left:Number,//the X position of the component

top:Number,//the Y position of the component

width:Number,//the width of the component

height:Number//the height of the component

}

復(fù)制代碼

resizestop 縮放結(jié)束

Required: false || Parameters: object

object 同resizing的object

dragging 拖拽時事件

Required: false || Parameters: object

object 同resizing的object

dragstop 拖拽結(jié)束事件

Required: false || Parameters: object

object 同resizing的object

issues

在拖拽元素里面添加input等類似的表單性元素符相,無法正常點擊操作,特別是focus無法做到趟脂,click也是經(jīng)常失效[攤手]

vue-drag-resize 的設(shè)計問題,在元素內(nèi)部只能觸發(fā)本元素镇眷,如果是有表單元素,只能被動的觸發(fā);解決:

activateEv(index) {

console.log('activateEv'+index);

this.$refs['drag-input'].focus();

? }

復(fù)制代碼

怎么修改使點擊組件外面后圈驼,不需要點擊組件才能進行?

:preventActiveBehavior="true" 設(shè)置這個屬性,禁用點擊組件外事件

更新計劃

設(shè)置了組件的minh與minw,使用過程后臺一直報警告

minh跟minw注意臨界值玉锌。默認是50,查看源碼發(fā)現(xiàn)必須要大于0 ,不能為0涎才,這就是大部分開發(fā)人員后臺報警告的原因涛救。當然,如果想要設(shè)置為0蹭沛,可以重新定義屬性校驗規(guī)則

多個拖拽元素败徊,之前如何做到互斥?看github上的例子是互斥的沈自,實際用起來發(fā)現(xiàn)經(jīng)常性的無法互斥[攤手]

最佳的解決方案是使用數(shù)據(jù)去管理這些互斥的元素籍滴,可以在父級設(shè)置數(shù)據(jù)管理,或者引入vuex進行數(shù)據(jù)管理。關(guān)鍵點在點擊燎竖,拖拽构回,失焦的時候,做到對數(shù)據(jù)的精確管理

如何管理多個拖拽元素之間的zIndex?

這是必定會遇到并且無法逃避的一個問題纤掸,操作上需要保持當前激活的組件是最上層借跪,但是在總體上歇由,又要確保其圖層管理的初始谢谦。維護zIndex镜撩,并且注意在刪除與置換層級的時候?qū)?yīng)的數(shù)據(jù)修改预柒。如果被激活,就設(shè)定為一個最大的值袁梗,失去激活狀態(tài)淋袖,要恢復(fù)到初始值。

這個組件使用簡單锯梁,清楚明了即碗,我自己在用的時候,就是上手很快陌凳,但是要如何良好的應(yīng)用它剥懒,以及處理一些異常的情況下,還是有很多的坑合敦〕蹰伲基于這個組件,我實現(xiàn)了一個編輯器的平臺,后續(xù)會更新這個組件更實用的一些應(yīng)用實例保檐,以及如何與vuex結(jié)合耕蝉,實現(xiàn)一個基礎(chǔ)的h5編輯器平臺。再結(jié)合一些設(shè)置與多媒體的處理夜只,即可以實現(xiàn)諸如易企秀赔硫、Maka等這種h5定制化平臺。一步一步總可以實現(xiàn)的盐肃,加油鴨?

轉(zhuǎn)載于:https://juejin.im/post/5beb9423e51d4577f96e8d24

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末爪膊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子砸王,更是在濱河造成了極大的恐慌推盛,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谦铃,死亡現(xiàn)場離奇詭異耘成,居然都是意外死亡,警方通過查閱死者的電腦和手機驹闰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進店門瘪菌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嘹朗,你說我怎么就攤上這事师妙。” “怎么了屹培?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵默穴,是天一觀的道長。 經(jīng)常有香客問我褪秀,道長蓄诽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任媒吗,我火速辦了婚禮仑氛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘闸英。我一直安慰自己锯岖,他們只是感情好,可當我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布自阱。 她就那樣靜靜地躺著嚎莉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪沛豌。 梳的紋絲不亂的頭發(fā)上趋箩,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天赃额,我揣著相機與錄音,去河邊找鬼叫确。 笑死跳芳,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的竹勉。 我是一名探鬼主播飞盆,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼次乓!你這毒婦竟也來了吓歇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤票腰,失蹤者是張志新(化名)和其女友劉穎城看,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體杏慰,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡测柠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了缘滥。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片轰胁。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖朝扼,靈堂內(nèi)的尸體忽然破棺而出赃阀,到底是詐尸還是另有隱情,我是刑警寧澤吟税,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布凹耙,位于F島的核電站,受9級特大地震影響肠仪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜备典,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一异旧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧提佣,春花似錦吮蛹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至倚喂,卻和暖如春每篷,著一層夾襖步出監(jiān)牢的瞬間瓣戚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工焦读, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留子库,地道東北人。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓矗晃,卻偏偏與公主長得像仑嗅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子张症,可洞房花燭夜當晚...
    茶點故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內(nèi)容