【问题标题】:One canvas, two dom elements?一个画布,两个 dom 元素?
【发布时间】:2016-02-25 01:18:16
【问题描述】:

是否可以让两个 dom 元素引用同一个画布,从而在两个地方显示一个画布而不需要第二个画布?

【问题讨论】:

标签: javascript dom canvas element


【解决方案1】:

好的!

使用 html5 画布数据 url 作为多个元素的背景:

$('.bk').css('background-image','url('+canvas.toDataURL()+')');

var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");

ctx.fillStyle='skyblue';
ctx.strokeStyle='gray';
ctx.lineWidth=3;
ctx.beginPath();
ctx.arc(50,50,40,0,Math.PI*2);
ctx.closePath();
ctx.fill();
ctx.stroke();

$('.bk').css('background-image','url('+canvas.toDataURL()+')');
body{ background-color: ivory; }
#canvas{border:1px solid red; margin:0 auto; }
.bk{width:100px;height:100px;border:1px solid green;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<h4>Canvas</h4>
<canvas id="canvas" width=100 height=100></canvas>
<h4>Two Divs containing the same canvas background</h4>
<div class=bk>One</div>
<div class=bk>Two</div>

【讨论】:

  • 适用于静态画布,但适用于动画画布...我认为 2 个元素和一个简单的 drawImage(sourceCanvas,x,y) 是更好的选择
  • @Kaiido。动画...您在问题中的哪里看到动画? 8-) 但如果您需要一些动画对象,您可以使用 CSS 定位。但是,是的firstCanvasContext.drawImage(SecondCanvas...) 有效,但提问者禁止使用多个画布。 :-)
  • 我在 OP 中看不到任何内容,但我几乎可以肯定有人会来这里尝试使用动画画布。另外,我不明白为什么在 OP 中禁止这样做
  • @Kaiido。当然......我刚刚回答了给定的问题......但我确信其他问题将涉及动画和舞台画布。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-29
相关资源
最近更新 更多