我的目标是为div动态生成背景图像。
我有一个函数,它:
在画布上绘制图像;
获取图像的数据URL;
创建一个以图像为背景的bgDiv
;
将bgDiv
添加到给定的div
元素中。
这是第三点和第四点的代码:
var bgDiv = document.createElement('div');
$(bgDiv).css({
position: 'absolute',
left: '0px',
top: '0px',
width: '100%',
height: '100%',
background: 'url(' + url + ')',
});
$(div).prepend(bgDiv);
问题是:
bgDiv
绘制在div
的子代前面。我发现这是由于position: absolute
属性的缘故,该属性是在bgDiv
上设置的,而本例中的常规子级没有设置position
。我如何才能将
bgDiv
元素绘制在所有子项的底部,无论它们是什么?免责声明:我知道我可以只设置
background-image
的div
属性,但是对于我的目的来说这还不够。我正在最近的Firefox中对此进行测试,并且需要非常通用的解决方案。
最佳答案
编辑:如果您实际上使用$(div)
作为选择器,那就是一个问题。请使用内容<div>
的ID或类。
编辑2:如果您多次(使用不同的背景图像)这样做,则我将bgDiv
设为一类,然后动态分配其位置。它将为您节省一些JS。
bgDiv必须在其余div内容“之下”,因此给它一个小于该内容的z-index
;但是,这可能导致它落在另一个元素的下面。在这种情况下,请将div的内容设置为较高的z-index(并将bgDiv的z-index保留为默认的auto
)。
.bgDiv {
position: 'absolute';
z-index:-1;
/* left: '0px'; Set in JS */
/* top: '0px'; Set in JS */
width: '100%';
height: '100%';
/* background: 'url(' + url + ')'; Set in JS */
}