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

Jam*_*tor 5 cytoscape.js

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

cytoscape.stylesheet()
  .selector('node')
    .css({
      'width': function(ele) {
        return 12;
    })
Run Code Online (Sandbox Code Playgroud)

我还知道特殊值“标签”可以是属性的值,例如

cytoscape.stylesheet()
  .selector('node')
    .css({
      'width': 'label'
    })
Run Code Online (Sandbox Code Playgroud)

我想知道是否有任何特定的属性可以用来按某种因素缩放标签,例如我想要的是类似的

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

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

但我一直无法找到获取 labelWidth 的方法。我确实设法使用 rscratch 来做到这一点,但前提是节点实际上被渲染了两次(例如多个 .selectors),任何从给定元素获取标签宽度和高度的正确方法(或者至少是一种计算它的方法)被渲染?)。

max*_*anz 1

如果你想做更复杂的尺寸调整,你的计算就必须更复杂。

选项 :

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

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

(1) 比 (2) 更干净。

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