cytoscape.js锅的z-index /前景化上点击元素(cytoscape.js pan a

2019-10-19 06:32发布

我已经使用了cytoscape.js,而我试图用图表会遇到一些问题。

1)有没有办法通过单击并拖动背景平移? 它看起来像它应该工作,但我已经完全无法得到它。 在某些时候,我可能会添加panzoom,但如果有可能做到这一点,而不以及这将是有益的。

这里有一个的jsfiddle ,其中包含我的代码的简化版本。 该zoomEnabled: false工作正常,但panningEnabled: true似乎并不如此。

2)我遇到一个有点问题,当谈到对彼此顶部分层节点。

我正在单击时“前景化”节点,以前被点击那些“middlegrounding”节点。 因此,当最近点击节点与其他节点重叠,应该在最前面。 已被点击以前到最近的节点应该在所有节点的顶部除了前景化节点。

我一直在尝试和失败使用z-index的做到这一点。 这是我的点击功能:

cy.on('tap', 'node', function(e){
    var curr_node = e.cyTarget; 
    var prev_foci = cy.elements('node.focused');

    prev_foci.not(curr_node).addClass('less-focused');

    if (curr_node.hasClass('less-focused')){ //if it's been middlegrounded, foreground
      curr_node.removeClass('less-focused');
    } 
    else { //otherwise, swap between foreground and background
      curr_node.toggleClass('focused');
    }
});

我的风格像

.selector('.focused')
  .css({
    'width' : 200,
    'height' : 200,
    'background-color' : "#505", 
    'z-index' : 4,
    'border-width' : "2px",
    'border-color' : "#999",
  })
.selector('.less-focused')
  .css({
    'background-color' : "#a00",
    'z-index' : 3,
  }),

这里有一个的jsfiddle 。

我颜色编码,使其更容易地看到发生了什么事情。 虽然我相信我的逻辑是正确的(颜色的切换,我想顺便说一下,和z指数是依赖于他们),节点的视觉秩序似乎没有被改变。 如果将两张,他们只是默认把子节点父的顶部。

然而,前景化节点表现得好像他们是在其它节点的顶部,当你点击它们。 如果将两张,然后单击重叠它的行为就好像您按下了前景化紫色节点,哪怕是视觉上middlegrounded红下方。 它还看起来完全是我想,当你单击并拖动的方式,它只是那么当你放手变化。

另一个问题是文本。 无论z-索引或节点的关系,它出现渗透。

我想节点有效是不透明的,而不是让其他节点或文本显示出来。

我知道的z-index只是相对于父母,但我认为这会工作,因为它会影响所有其他选择的节点。 看来,情况并非如此。 有一些其他的方式来做到这一点? 正如它说,在功能上,它似乎是工作,因为我想要的。 只是没有在视觉上。

非常感谢!

Answer 1:

(1)保持的背景,直到看到活动的平移指标。 您也可以使无效,使保持延迟更快框选择。

(2)看来你可能已经发现了一个错误。 https://github.com/cytoscape/cytoscape.js/issues/414



文章来源: cytoscape.js pan and z-index/ foregrounding Elements on Click