是否可以将“ Angular Drag and Drop”元素限制为圆形边界?
看下面的documentation
限制元素内的移动
如果要阻止用户将cdkDrag元素拖到另一个元素之外,则可以将CSS选择器传递给cdkDragBoundary属性。该属性的工作方式是接受选择器并查找DOM,直到找到与之匹配的元素为止。如果找到匹配项,它将用作不能拖动该元素的边界。当将cdkDrag放置在cdkDropList中时,也可以使用cdkDragBoundary。
我尝试将css(请参阅stackblitz)更改为圆形,但是我对结果的理解是,这仅更改外观,而不更改DOM元素的边界。
DOM中的所有内容基本上都是矩形,这是否意味着不可能形成圆形或非常接近圆形的限制?
答案 0 :(得分:1)
据我所知,没有直接的方法可以做你想要的事情。
但是,您可能可以监视拖动,对圆形边界进行“命中测试”,并在超出边界时自行停止拖动。
我在https://stackblitz.com/edit/angular-ut9fgz进行了快速检查
这会在圆的中点停止拖动,但是:
它不仅禁止越过边界,还取消了 拖动。
对每个拖动事件(基本上每个像素)都有一个回调 遍历)可能会很昂贵-您的“点击测试”最好是
因此,这显示了一般概念,但仍有很多工作要做。
除了官方文档,以下页面可能会有所帮助:
https://grokonez.com/frontend/angular/angular-7/angular-7-drag-and-drop-example-angular-material-cdk