2012-04-02 18 views

Antwort

-4

Sie können eine Canvas innerhalb der div mit absoluter CSS-Position haben, andere Elemente müssen Z-Index größer als die Leinwand haben.

25

Nun, Sie könnten ein Canvas-Element innerhalb des div platzieren, seine Höhe und Breite maximieren, seine Position relativ und seinen Z-Index auf einen negativen Wert setzen.

Wenn Sie jedoch eine echte CSS background-image:... verwenden möchten, müssten Sie Ihr Bild in der Zeichenfläche erstellen. Sie könnten dann toDataURL verwenden, um eine Daten URL zu erhalten, die Sie als Wert für Ihre ursprüngliche background-image verwenden:

var canvas = document.getElementById('canvas'); 
var data = canvas.toDataURL(); 
var myElement = document.getElementById('myelement'); 

myElement.style.backgroundImage = 'url('+data+')'; 

Wenn Sie einen neuen Hintergrund erstellen nicht wollen, sondern eine bestehende, laden Sie Ihre Original manipulieren Hintergrund in ein Bildobjekt (oder einen Verweis erhalten) und verwenden drawImage:

var image = new Image(); 
image.onload = function(){ 
    context.drawImage(this,0,0); 
    someCallbackToManipulateTheImage(); 
} 
var src = myElement.style.backgroundImage.substr(4); 
src.substr(0,src.length - 1); 
image.src = src; 
+2

Hm, interessant. Jemand mochte diese Antwort nicht. – Zeta

+0

Schön gemacht – TaterJuice

+0

Gibt es eine Möglichkeit, ein Canvas als Hintergrundbild mehrerer DIV-Hintergrundbilder zu verwenden, ohne mehrere Canvas einzufügen oder mehrere Daten-URLs wie --webkit-canvas zu generieren? Es wird Speicher gespart, wenn es möglich ist. Wenn es die Canvas-URL in der CSS-Datei angeben kann, wird es die Programmierung viel vereinfachen, da es keine Canvas für jeden DIV mit denselben Hintergründen einfügen muss. – sean

6

das Hintergrund-Bild des div auf dieses Set:

"url('" + canvas.toDataURL() + "')"; 

Bearbeiten: An diesem Punkt, beachten Sie, dass Sie auch frei tun können, was Sie mit der Leinwand tun möchten, da das Hintergrundbild weiterhin nur die Bilddaten enthält, die in der Leinwand in dem Moment, als Sie Leinwand aufgerufen haben. toDataURL(). Ziehe es frei, auf die Leinwand zu legen oder zu zeichnen, da dies den Hintergrund deines Divs zu diesem Zeitpunkt nicht beeinflusst.

+1

Angenommen, dies funktioniert wie erwartet, sind sowohl diese als auch die gewählte Antwort zu 100% korrekt. Dies ist eine Zuweisung der background-image -Eigenschaft in CSS, die andere basiert auf z-indexing. –

+1

Ich denke, dies ist mehr im Einklang mit dem, was das OP suchte, um die Darstellung der dynamisch gezeichneten Leinwand durch ein statisches Bild, hier in der URL codiert, zu ersetzen. –