Ist es möglich, das Hintergrundbild eines DIV zu einem Canvas zu machen, das mit getContext ("2d") geändert werden kann?HTML5 Canvas als CSS Hintergrundbild?
Antwort
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.
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;
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.
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. –
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. –
- 1. HTML5 Canvas Hintergrundbild
- 2. HTML5 generieren Leinwand Hintergrundbild
- 3. HTML5 Leinwand Hintergrundbild wiederholen
- 4. HTML5 Canvas Speichern von Zeichnung als Bild
- 5. HTML5 canvas drawImage falsche Bildgröße
- 6. HTML5 Canvas Bildskalierung Ausgabe
- 7. CSS3-Rahmenradius zu HTML5-Canvas
- 8. html5 canvas hand cursor probleme
- 9. HTML5 Canvas passen Fenster
- 10. HTML5/Canvas: Webseitenvorschau?
- 11. HTML5-Canvas-Klick-Ereignis
- 12. HTML5-Canvas-Objektereignisse
- 13. HTML5 Canvas: Zoomen
- 14. Skew Transformation HTML5-Canvas
- 15. HTML5 Dynamisch Canvas erstellen
- 16. HTML5 - Canvas-Ereignisbehandlungsbibliothek?
- 17. Html5 Canvas Einschränkungen
- 18. HTML5 Canvas reagiert nicht
- 19. HTML5-Canvas-Fortschrittsbalken
- 20. Korrekter HTML5-Canvas-Kontrollpunkt
- 21. Html5 canvas drawImage gestreckt
- 22. HTML5 canvas hittesting
- 23. HTML5 Canvas und manipulieren
- 24. HTML5 Canvas - Kontextsensitives Menü
- 25. HTML5 Canvas toDataURL gibt
- 26. HTML5 Canvas-Spiel, Timer
- 27. Text an HTML5 Canvas anpassen?
- 28. HTML5 Canvas-Compositing (Quelle-in)
- 29. UIWebView mit HTML5 Canvas- und Retina-Display
- 30. CSS Stretched Hintergrundbild
Hm, interessant. Jemand mochte diese Antwort nicht. – Zeta
Schön gemacht – TaterJuice
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