2013-03-12 5 views

Antwort

3

Siehe Antwort unten für eine bessere Art und Weise, aber Sie können ein Rechteck bilden, das die ganze Leinwand Bereich füllt:

var paper = Raphael(200, 350, 320, 200); 
var rect = paper.rect(0, 0, 320, 200); 
rect.attr("fill", "#f00"); 
rect.attr("stroke", "#f00"); 
24

Eigentlich ist es durchaus möglich, die Hintergrundfarbe für eine SVG-Leinwand gesetzt - Der Vorbehalt hier ist, dass, obwohl Raphael alle Elemente innerhalb der Leinwand steuert, es sehr wenig stilistische Kontrolle direkt über der Leinwand selbst bietet.

Glücklicherweise können Sie Zugriff auf den Dom-Knoten, der mit einem Raphael-Papierobjekt verknüpft ist, über seine Leinwand-Eigenschaft erhalten. Das macht es einfach, solche Dinge zu tun:

var paper = Raphael(200, 350, 320, 200); 
paper.canvas.style.backgroundColor = '#F00'; 

Noch besser wäre es, könnten Sie Ihr Leinwand-Hintergrund/Grenze/padding als Teil Ihrer Anwendung Sheet definieren und dann nur sicherstellen, dass die Leinwand gesetzt, um die entsprechenden verwenden Stil:

var paper = Raphael(200, 350, 320, 200); 
paper.canvas.className += ' my_svg_class'; 
+3

+1 beide funktionieren perfekt im VML-Modus sowie SVG (sowohl auf IE8 und IE7). ** http: //jsbin.com/uYilUqe/2/edit** Seltsamerweise funktioniert die Methode '.className' nicht in aktuellem Chrome oder Firefox (oder IE9 und IE10), funktioniert aber in IE7 und IE8. Ich habe noch nie etwas in alten IE, aber nicht in Standard-Browsern arbeiten gesehen ... – user568458

+2

@ user568458 Ich hatte das gleiche Problem, aber anscheinend kann es in den modernen Browsern umgehen, indem Sie auch das '' baseVal''-Feld: '' paper.canvas.className.baseVal + = "my_svg_class" '' – easuter