2012-04-02 29 views

Respuesta

-4

Puede tener un lienzo dentro del div con posición css absoluta, otros elementos tienen que tener un índice z mayor que el lienzo.

25

Bueno, podría colocar un elemento de lienzo dentro del div, maximizar su altura y ancho, establecer su posición en relativa y su índice z en un valor negativo.

Sin embargo, si desea utilizar un CSS real background-image:..., deberá crear su imagen dentro de su lienzo. A continuación, puede utilizar toDataURL para obtener una URL de datos que se puede utilizar como valor para su original background-image:

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

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

Si no desea crear una nueva fondo, pero manipular una ya existente, cargue el original fondo en un objeto de imagen (o conseguir una referencia) y el uso de 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, interesante. A alguien le disgustó esta respuesta. – Zeta

+0

Maravillosamente hecho – TaterJuice

+0

¿Hay alguna manera de utilizar un lienzo como imagen de fondo de DIV de fondo múltiple sin insertar múltiples lienzos o generar varias URL de datos igual que --webkit-canvas? Ahorrará memoria si es posible. Si puede especificar el lienzo URL en el archivo css, simplificará mucho la programación ya que no necesita insertar lienzo para cada DIV con los mismos fondos. – sean

6

Definir el fondo de la imagen de la div a esto:

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

Editar: En ese momento, tenga en cuenta que también puede hacer lo que desee con el lienzo, ya que la imagen de fondo seguirá conteniendo solo los datos de imagen que estaban en el lienzo en el momento en que llamó al lienzo. toDataURL(). Siéntase libre de descartar o dibujar en el lienzo, ya que no afectará el fondo de su div en ese punto.

+1

Suponiendo que esto funciona como se esperaba, tanto esta como la respuesta elegida son 100% correctas. Esta es una asignación de la propiedad background-image en CSS, la otra basada en z-indexing. –

+1

Creo que esto está más en sintonía con lo que el OP estaba buscando, para reemplazar la representación del lienzo dibujado dinámicamente con una imagen estática, aquí codificada en la URL. –