在cytoscape中调整节点相对于标签的大小

时间:2016-03-25 10:01:26

标签: cytoscape.js

所以我知道你可以用一个函数来计算Cytoscape.js中的css属性,例如。

cytoscape.stylesheet()
  .selector('node')
    .css({
      'width': function(ele) {
        return 12;
    })

我也知道特殊价值'标签'这可以是财产的价值,例如。

cytoscape.stylesheet()
  .selector('node')
    .css({
      'width': 'label'
    })

我想知道的是,我可以使用任何特定属性来缩放标签,例如:我想要的是像

cytoscape.stylesheet()
  .selector('node')
    .css({
      'width': function(ele) {
        return labelWidth * 1.5; //Where to get labelWidth from
    })

特别希望能够计算椭圆的高度和宽度,以便标签完全包含在椭圆内(可以使用一些数学计算,例如Ellipse bounding a rectangle)。

但我还没有找到获得labelWidth的方法。我确实设法使用rscratch但是只有当节点实际上被渲染两次(例如多个.selectors)时,才能从给定元素获得标签宽度和高度的任何正确方法(或者至少是计算它的方式&#39) ;会被渲染吗?)。

2 个答案:

答案 0 :(得分:1)

如果您想进行更复杂的尺寸调整,您的计算必须更加复杂。

选项:

(1)使用div计算文本的尺寸。

(2)使用自动调整大小,然后根据当前大小调整大小。

(1)比(2)更清洁。

Cytoscape.js在样式表中为您公开渲染的计算值是没有意义的。这些值是从样式表计算出来的,创建了一个依赖循环。

答案 1 :(得分:0)

如果您只想要节点内的标签,则可以设置 padding 属性以在文本周围留出更多空间。