5

我正在研究 JointJS API。但是我想防止元素从它们的原始位置移动。您能否建议我使用 JointJS 的一些特性或一般的 CSS 的任何特性,我可以用它们来使我的对象不可移动。

我不能在论文或论文上使用interactive: false 选项。$el.css('pointer-events', 'none'); 因为当鼠标悬停在元素上时我需要突出显示功能。

请提出一种在允许其他功能的同时禁用元素移动的方法。相关的CSS代码片段如下:

.viewport {
    -webkit-user-select: none;
    -moz-user-select: none;
    user-select: none;
}
.element {
    /* Give the user a hint that he can drag&drop the element. */
    cursor: crosshair;
    position: fixed;
}
.element * {
    /* The default behavior when scaling an element is not to scale the stroke in order to prevent the ugly effect of stroke with different proportions. */
    vector-effect: non-scaling-stroke;
    -moz-user-select: none;
    user-drag: none;
    position: fixed;
}
4

3 回答 3

2

interactive选项还允许一个function值。要只允许与链接交互(更具体地说是joint.dia.LinkView实例),您可以这样做:

var paper = new joint.dia.Paper({
  el: $('#paper'),
  width: 400,
  height: 400,
  model: graph,
  interactive: function(cellView, method) {
    return cellView instanceof joint.dia.LinkView; // Only allow interaction with joint.dia.LinkView instances.
  }
});

或者,您可以检查method参数。该method值是pointermove在尝试拖动元素时以及pointerdown单击链接时。

我希望这有帮助!

于 2016-08-24T11:38:32.227 回答
0

对我有用的解决方案是将以下内容添加到 Paper 定义中:

interactive: function(cellView) {
  if (cellView.model.get('locked')) {
    return {
      elementMove: false
    };
  }
  // otherwise
  return true;
}

然后在我想锁定的元素上(防止移动),我添加了:

element.set('locked', true);
于 2021-10-17T15:54:45.823 回答
-1
var paper = new joint.dia.Paper({
  el: $('#paper'),
  width: 400,
  height: 400,
  gridSize: 10,
  model: graph,
  interactive: false // <------
});
于 2016-04-12T19:58:00.827 回答