我正在使用WebGL渲染一些图像并将它们放在画布上。我想知道是否可以在画布上放置一个svg元素?
我实际上可以手动移动画布顶部绘制的矢量图像。所以我想应该有办法做到这一点。
答案 0 :(得分:9)
将两个元素放在一起是否相同?为他们提供父position:relative;
或position:absolute;
。将第二个(或两个)设置为position:absolute; left: 0px; top:0px; z-index: 2;
<div style="position: relative;">
<canvas id="c" width="300" height="300"></canvas>
<img src="http://s.cdpn.io/3/kiwi.svg"
style="position: absolute;
left: 0px;
top:0px;
z-index: 2;
width: 300px;
" />
</div>
示例:
var canvas = document.getElementById("c");
var ctx = canvas.getContext("2d");
function rand(r) {
return Math.floor(Math.random() * r);
}
function draw() {
ctx.fillStyle ="rgb(" +
rand(256) + "," +
rand(256) + "," +
rand(256) + ")";
ctx.fillRect(
-150 + rand(canvas.width),
-150 + rand(canvas.height),
rand(300),
rand(300));
requestAnimationFrame(draw);
}
draw();
<div style="position: relative;">
<canvas id="c" width="300" height="300"></canvas>
<img src="http://s.cdpn.io/3/kiwi.svg"
style="position: absolute;
left: 0px;
top:0px;
z-index: 2;
width: 300px;
" />
</div>
这似乎已经得到了答案,但方式相反here