我可以将svg图像/元素放在画布元素的顶部吗?

时间:2014-06-04 15:08:06

标签: css html5 vector snap.svg

我正在使用WebGL渲染一些图像并将它们放在画布上。我想知道是否可以在画布上放置一个svg元素?

我实际上可以手动移动画布顶部绘制的矢量图像。所以我想应该有办法做到这一点。

1 个答案:

答案 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