如何在视频上覆盖画布

Pri*_*ham 5 html css 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;
}
Run Code Online (Sandbox Code Playgroud)

JSFiddle在这里

但是由于某种原因画布没有覆盖整个视频,它更短。我该如何解决?

dan*_*end 7

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

这里: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>
Run Code Online (Sandbox Code Playgroud)


小智 2

将画布的高度调整为 100% 可确保覆盖整个视频。自动标记只是根据需要显示的数据量调整对象的大小。例如,对于带有“width:auto”的 <\p> 标签,文本越多,标签越宽等。 .container { margin: 0 auto; 位置:相对;}

.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;
}
Run Code Online (Sandbox Code Playgroud)