我已经使用了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只是相对于父母,但我认为这会工作,因为它会影响所有其他选择的节点。 看来,情况并非如此。 有一些其他的方式来做到这一点? 正如它说,在功能上,它似乎是工作,因为我想要的。 只是没有在视觉上。
非常感谢!