角CDK拖放-是否可以创建圆形边界?

时间:2019-05-13 13:32:50

标签: javascript css angular angular-cdk

是否可以将“ Angular Drag and Drop”元素限制为圆形边界?

看下面的documentation

  

限制元素内的移动

     

如果要阻止用户将cdkDrag元素拖到另一个元素之外,则可以将CSS选择器传递给cdkDragBoundary属性。该属性的工作方式是接受选择器并查找DOM,直到找到与之匹配的元素为止。如果找到匹配项,它将用作不能拖动该元素的边界。当将cdkDrag放置在cdkDropList中时,也可以使用cdkDragBoundary。

我尝试将css(请参阅stackblitz)更改为圆形,但是我对结果的理解是,这仅更改外观,而不更改DOM元素的边界。

DOM中的所有内容基本上都是矩形,这是否意味着不可能形成圆形或非常接近圆形的限制?

https://stackblitz.com/edit/angular-gughvc

1 个答案:

答案 0 :(得分:1)

据我所知,没有直接的方法可以做你想要的事情。

但是,您可能可以监视拖动,对圆形边界进行“命中测试”,并在超出边界时自行停止拖动。

我在https://stackblitz.com/edit/angular-ut9fgz进行了快速检查

这会在圆的中点停止拖动,但是:

  • 它不仅禁止越过边界,还取消了 拖动。

  • 对每个拖动事件(基本上每个像素)都有一个回调 遍历)可能会很昂贵-您的“点击测试”最好是

因此,这显示了一般概念,但仍有很多工作要做。

除了官方文档,以下页面可能会有所帮助:

https://grokonez.com/frontend/angular/angular-7/angular-7-drag-and-drop-example-angular-material-cdk

Cancel drag on key press Angular cdk Drag and Drop