【Web前端问题】js中拖拽过程中 参考线功能的实现思路
带网格 拖拽带参考线定位提示 , 这种JS如何实现 一般的思路是怎样的设计。
拖拽时 要看场景中组件的位置 自动对齐其他组件的2边或中心 在边缘对齐边界
回答:
我在知乎上有个回答,回答的正好是这个问题,这里简要说一下大概的思路,具体的可以查看知乎的答案:https://www.zhihu.com/questio...
实现的效果大概是这样: http://yeetoo.ymark.cc/(其中有不完善的地方,以后会被慢慢完善)
主要思路:
鼠标按下并且监听移动的对象 ----> 根据对象的边界,和所有的对象进行比对,如果差值<=5(此值决定吸附区间,可以根据情况进行改变。),则向画布中添加一条辅助线。 ----> 鼠标释放清除所有的辅助线。
实现的详细版:也只是说个大概,就不上具体代码了。
let auxiliary_line_arr = []; // 需要添加的辅助线列表
function 监听鼠标按下事件的回调{
auxiliary_line_arr=[];
}
function 监听鼠标移动事件的回调{
const adsorp_arr = [];
1.获取移动对象边界
2.获取所有的对象的边界
3.进行边界比对 {
1.先判断是否靠近边界
2.再判断是否有相交或者要相交的对象
if(差值<5px的时候){
auxiliary_line_arr.push({要画的线的坐标点});
adsorp_arr.push(吸附参数);
}
}
4.实现吸附
adsorp_arr.map(() => {
if( Math.abs(移动对象的x-吸附[value]) <= 5 ){
设置移动对象的x = 吸附[value];
}
})
}
// 任何移动或者改变操作都会触发这个方法
function 监听画布重新渲染被调用的方法{
auxiliary_line_arr.map((k) => 向画布中添加一条线; );
}
function 监听鼠标释放事件的回调{
auxiliary_line_arr = [];
}
回答:
一年半之前,我司计划开发一款可视化建站的产品。当时我也在社区寻找过一些关于拖拽辅助对齐的解决方案。
很可惜,这类需求往往比较“特殊化”,不易于复用。Github上可以找到一些demo,但是可以用于生产环境的,几乎没有。
这半年多以来,项目接近尾声不那么忙。我逐步整理出自己工作中的解决方案,试图打造一款可用于生产环境的拖拽辅助对齐工具。
假模假样的写起了文档,单测。。。今天发布了1.0版本,大家感兴趣的可以了解一下,看看能不能起到一些作用。https://github.com/zcued/reac...
回答:
没有大神呢 ?
回答:
吸附+逃逸两步
回答:
+1
以上是 【Web前端问题】js中拖拽过程中 参考线功能的实现思路 的全部内容, 来源链接: utcz.com/a/138175.html