最近專案中有這樣乙個需求:要求網格中每個塊拖拽的時候吸附網格,並且放大縮小相對位置不變,傳給後台的座標資訊也一致;
//自定義拖拽指令
vue.directive("drag", else if (evv.clientx - (ev.clientx - ex * 0.4) >= (pw - cw) * 0.4)
if (evv.clienty - (ev.clienty - ey * 0.4) <= 0) else if (evv.clienty - (ev.clienty - ey * 0.4) >= (ph - ch) * 0.4)
} else if (value.value.framebig == 2) else if (evv.clientx - h >= pw - cw)
if (evv.clienty - t <= 0) else if (evv.clienty - t >= ph - ch)
}}.bind(this);
document.onmouseup = function(e) ;
let prom = equipment.updatecabinetxy(params);
prom.then(
ret => {},
err => {}
);value.value.ifclick(false);
}settimeout(() => , 300);
}.bind(this);
};}});
1、因為這個網格背景中需要不斷新增不同大小的方塊並擺放位置,所以我用vue的自定義指令寫,指令傳了4個引數,分別為當前移動的方塊id、每次移動的距離(也就是乙個網格的寬度)、當前是拖拽還是單機(因為每個方塊同時繫結了單機、雙擊、拖拽事件,所以為單機和拖拽做區分)、當前的放大縮小情況(與上面icon對應)
2、在data中給了資料
3、吸附網格很簡單,思路:方格的定位值=移動了的距離/網格的寬度得到的整數部分*格仔的寬度
4、剛開始沒有相同怎麼去做放大縮小能相對保持不變,不想設定兩個尺寸再讓裡面的方塊根據相對位置移動,後來想到了css3的scale,可以在保持占用位置和真實大小不變的情況下等比放大縮小
5、但是滑鼠用scale在滑鼠拖拽的時候也得乘以或者除以相對應的比例,否則物體不會緊跟著滑鼠走
6、目前只是實現功能,**略顯冗雜,後期會優化更新
LayaAir拖拽移動物件並吸附 附原始碼
前言 拖拽移動物件是2d休閒小遊戲中常用的乙個功能,典型代表例如 植物大戰殭屍 中,種植植物的表現形式,拖拽植物卡片種植到相應的地點。今天介紹一下在laya專案中實現這一功能。該功能實現參照了 egret拖拽物件與吸附 思路 在 laya 中實現拖拽物件,需要用到mouse move事件的監聽,觸控...
自定義view,可拖拽進度和吸附效果的圓形進度條
前言 最近接到乙個需求,第一眼看到ui互動效果時,瞬間想對產品小哥說 尼瑪,這麼會玩,你咋不上天 確認了具體互動細節,喝了兩口農夫三拳,開始了兩耳不聞窗外事,一心只想擼 的過程。先上ui效果 說明 下面是整個自定義view的 public class roundprogressview extend...
js之拖拽事件
js之拖拽事件 api 拖拽事件是js原生的事件,使用時在div上新增draggable true 即可拖動該div 在拖動過程中,將激發多個事件,從而完成拖動 注意 1.瀏覽器塊 div等 預設禁止拖拽事件的拖放操作,所以若想監聽drop操作,需要在dragover中阻止元素發生預設的行為,然後就...