2016-03-25 51 views
1

所以我知道你可以使用一个函数来计算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),从给定元素获得标签宽度和高度的任何正确方法(或者至少一种计算它的方式被渲染?)。

回答

1

如果你想做更复杂的尺寸,你的计算将不得不更复杂。

选项:

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

(2)使用自动调整大小,然后根据当前大小调整大小。 (1)比(2)更清洁。

Cytoscape.js在样式表中为您显示渲染的计算值没有任何意义。这些值是从样式表中计算出来的,创建一个依赖周期。