如何在视频上叠加画布

时间:2016-09-24 01:13:51

标签: css html5 canvas

我在div中有一个视频和一个画布,我想在画面上覆盖画布。我试过这个:

.container {
  margin: 0 auto;
  position: relative;
}

.video {
  width: 100%;
  height: auto;
  position: absolute;
  top: 0;
  left: 0;
}

.canvas {
  width: 100%;
  height: auto;
  position: absolute;
  top: 0;
  left: 0;
  z-index: 10;
}

JSFiddle here

但由于某种原因,画布并未涵盖整个视频,因此它更短。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

画布必须具有绝对宽度和高度。当视频加载时,您可以指定正确的宽度和高度。

这里:jsfiddle: https://jsfiddle.net/7sk5k4gp/13/

PS:为了更好地理解,我放了一个红色滤镜。

以上代码:

<style>
  .canvas {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 10;
  background-color:rgba(255,0,0,0.5);
}

</style>
<div class="container">
  <video class="video" id="vd1" controls autoPlay      src="http://upload.wikimedia.org/wikipedia/commons/7/79/Big_Buck_Bunny_sma    ll.ogv" onplay="resize_canvas(this)"></video>
  <canvas class="canvas" id="cv1"></canvas>
</div>
<script>

function resize_canvas(element)
{
  var w = element.offsetWidth;
  var h = element.offsetHeight;
  var cv = document.getElementById("cv1");
  cv.width = w;
  cv.height =h;
}
</script>

答案 1 :(得分:0)

将画布的高度调整为100%可确保覆盖整个视频。自动标记仅调整对象的大小相对于需要显示的数据量。例如。对于&lt; \ p&gt;使用'width:auto'标记文本越多,标记越宽等。     。容器 {       保证金:0自动;       位置:相对;     }

.video {
  width: 100%;
  height: 100%;
  position: fixed;
  top: 0;
  left: 0;
}

.canvas {
  width: 100%;
  height: 100%;
  position: fixed;
  background-color:black;
  top: 0;
  left: 0;
  z-index: 10;
}
相关问题