麻煩總是不斷出現,還好辦法總比困難多,
1.公司開發一款可視化編輯html網頁的多媒體編輯平台,牽扯到標簽元素的拖拽,縮放,我找了找方法發現原生技術實現起來代碼太多,麻煩,還好找到了一個vue組件,可以實現元素的拖拽,縮放,記錄位置等等,如下:
2.組件好用,有各種事件,參數,屬性可以使用,但是也遇到了一個麻煩事,各個標簽之間,如何管理多個拖拽元素之間的zIndex?拖拽過程中這是必定會遇到並且無法逃避的一個問題,操作上需要保持當前激活的組件是最上層,但是在總體上,又要確保其圖層管理的順序。維護zIndex,並且注意在刪除與置換層級的時候對應的數據修改。
3.試着采用:一個變量記錄點擊次數,借用點擊次數,每點擊一次就把當前標簽的z-index增大至點擊次數 對應的數字,這樣就能保證最后點擊那個標簽都會在最頂端,z-index都會最大,
4.但是事與願違,此組件點擊之后默認不能對屬性的修改立刻重現,需要點擊一下,再點一下,才可以達到要求
5.無形中大大降低了使用體驗
==========================================================================
解決:使用 @activated ="" 激活事件,加ref屬性(激活事件參數里找不到實例對象),在組件激活時找到對應實例對象,更改標簽zindex。搭配@clicked=""點擊事件同時使用,即可
js:
點擊事件(e) {
this.點擊次數 += 1;
e.target.style.zIndex = this.點擊次數;
},
激活事件(item) {
this.點擊次數 += 1;
this.$refs[item][0].$el.style.zIndex = this.點擊次數;
},