2016-03-25 96 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在樣式表中爲您顯示渲染的計算值沒有任何意義。這些值是從樣式表中計算出來的,創建一個依賴週期。