2012-10-10 307 views
3

如果我使用Raphael創建Label,默認樣式是帶有白色文本的黑色塊。更改Raphael「標籤」的背景顏色

如何更改背景框顏色,但不更改文字顏色?我試過了:

paper.label(x, y, value).attr("fill", colour) 

但是這也填充了文本,我最終以不可見的文本。

我也不能簡單地改變this function默認的顏色,因爲我需要根據線路上的一些不同的,它的加入:

enter image description here

回答

6

當你注意到裏面,

Paper.label(x, y, value).attr(
    fill : color 
); 

會同時更改背景填充顏色和文本填充顏色,從而導致不可見的文本。

未指定正確解釋說這是一個數組,因此每個部分都必須單獨更改,如他們所示。但是,他們沒有提到更新兩套屬性的最簡單方法,所以我想分享這個提示。爲了做到這一點,請將屬性更改爲具有兩個集合的數組。第一個元素是背景,第二個元素是文本。

Paper.label(x, y, value).attr([{ 
    fill : backgroundColor 
}, { 
    fill : textColor 
}]); 

您可以添加任何其他適用的屬性,每一個部分。這裏是一個工作示例:http://jsfiddle.net/VzpeG/1/

+0

謝謝,我認爲這更準確地回答了這個問題。 – Marty

0

我正在對類似的圖這與使用:

.attr({填寫: 「#EF7C4D」})

讓我知道如何去...

+1

感謝羅布,雖然我提到我已經嘗試過,發現它也填充了文本。任何其他想法? – Marty

0
var r = Raphael('divID', 320, 220); 
text = r.text(100,100,"Hello").attr({fill:"#fff"});​​​​ 
text.label().attr({fill:"#f00"}); 

這裏的工作小提琴http://jsfiddle.net/vpGyL/216/

設置文本或標籤上都適用單獨...希望這可以幫助任何顏色!

在furthur挖... Paper.label(x,y,text)Element.label()

不同。如果你看一下源代碼Paper.Label(x,y,text)是一組矩形元素&文本元素,這樣做.attr({fill:"SomeColor"})適用於整個組,因此這兩個矩形&文本共享相同的顏色(因此隱形)。

噢是啊如果你只是想改變文字顏色做這個Raphael.g.txtattr.fill = "#yourColorCode"但是這改變了所有圖表和工具提示全局文字顏色(似乎不是一個好主意)。

雖然Element.Label的文件說是取上下文元素在標籤提示&嵌入,基本上你使用任何element,應用.label將它嵌入一個矩形