js中拖拽过程中 参考线功能的实现思路

发布于 2022-09-01 19:30:09 字数 209 浏览 16 评论 0

图片描述

带网格 拖拽带参考线定位提示 , 这种JS如何实现 一般的思路是怎样的设计。
拖拽时 要看场景中组件的位置 自动对齐其他组件的2边或中心 在边缘对齐边界

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

浴红衣 2022-09-08 19:30:09

我在知乎上有个回答,回答的正好是这个问题,这里简要说一下大概的思路,具体的可以查看知乎的答案: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 = [];
}
只等公子 2022-09-08 19:30:09

一年半之前,我司计划开发一款可视化建站的产品。当时我也在社区寻找过一些关于拖拽辅助对齐的解决方案。
很可惜,这类需求往往比较“特殊化”,不易于复用。Github上可以找到一些demo,但是可以用于生产环境的,几乎没有。
这半年多以来,项目接近尾声不那么忙。我逐步整理出自己工作中的解决方案,试图打造一款可用于生产环境的拖拽辅助对齐工具。
假模假样的写起了文档,单测。。。今天发布了1.0版本,大家感兴趣的可以了解一下,看看能不能起到一些作用。https://github.com/zcued/reac...

岁吢 2022-09-08 19:30:09

没有大神呢 ?

私野 2022-09-08 19:30:09

吸附+逃逸两步

不羁少年 2022-09-08 19:30:09

+1

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文