javascript - 如何使标记动态标记进度的任何位置

标签 javascript jquery html video.js

我对标记有疑问,我希望标记可以拉伸(stretch)以标记进度条上的任何位置

如下图GIF所示

问题:我想选择进度条上的任意点并能够拉伸(stretch)标记,标记可以是多个标记点。

我不知道如何使用下面的代码来做到这一点:

var player = videojs('demo');

player.markers({
   markerStyle: {
      'width':'9px',
      'border-radius': '40%',
      'background-color': 'orange'
   },
   markerTip:{
      display: true,
      text: function(marker) {
         return "I am a marker tip: "+ marker.text;
      }
   },
   breakOverlay:{
      display: true,
      displayTime: 4,
      style:{
         'width':'100%',
         'height': '30%',
         'background-color': 'rgba(10,10,10,0.6)',
         'color': 'white',
         'font-size': '16px'
      },
      text: function(marker) {
         return "This is a break overlay: " + marker.overlayText;
      },
   },
   markers: [
      {time: 9.5, text: "this", overlayText: "1", class: "special-blue"},
      {time: 16,  text: "is", overlayText: "2"},
      {time: 23.6,text: "so", overlayText: "3"},
      {time: 28,  text: "cool", overlayText: "4"}
   ]
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="http://vjs.zencdn.net/4.2/video.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/videojs-markers/0.7.0/videojs-markers.js"></script>
<link href="http://vjs.zencdn.net/4.2/video-js.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/videojs-markers/0.7.0/videojs.markers.min.css" rel="stylesheet"/>
<video id="demo" width="400" height="210" controls class="video-js vjs-default-skin">
   <source src="http://vjs.zencdn.net/v/oceans.mp4" type="video/mp4">
   <source src="http://vjs.zencdn.net/v/oceans.webm" type="video/webm">
</video>

最佳答案

您想要指针的位置,只需将时间放入 time: 20.5 并增加 markerStyle: { 'width': '190px' } 的宽度,这样您会在视频进度栏中看到很长的一行!

我们开始

var player = videojs('demo');

player.markers({
   markerStyle: {
      'width':'190px',
      'border-radius': '2px',
      'background-color': 'orange'
   },
   markerTip:{
      display: true,
      text: function(marker) {
         return "I am a marker tip: "+ marker.text;
      }
   },
   breakOverlay:{
      display: true,
      displayTime: 120,
      style:{
         'width':'100%',
         'height': '30%',
         'background-color': 'rgba(10,10,10,0.6)',
         'color': 'white',
         'font-size': '16px'
      },
      text: function(marker) {
         return "This is a break overlay: " + marker.overlayText;
      },
   },
   markers: [
      {time: 20.5, text: "this", overlayText: "1", class: "special-blue"},
   ]
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="http://vjs.zencdn.net/4.2/video.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/videojs-markers/0.7.0/videojs-markers.js"></script>
<link href="http://vjs.zencdn.net/4.2/video-js.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/videojs-markers/0.7.0/videojs.markers.min.css" rel="stylesheet"/>
<video id="demo" width="400" height="210" controls class="video-js vjs-default-skin">
   <source src="http://vjs.zencdn.net/v/oceans.mp4" type="video/mp4">
   <source src="http://vjs.zencdn.net/v/oceans.webm" type="video/webm">
</video>

您可以在这里学习更多有关所有事物的信息docs .

如果您有任何问题,请通知我们!

编码快乐!

关于javascript - 如何使标记动态标记进度的任何位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58988799/

相关文章:

javascript - 将 ngTable 行输入数据传递给 ngDialog 输入

javascript - platform.js 和 analytics.js 被 AdBlocker 拦截

javascript - 修复了 css 中的元素溢出

html - 使用 transform 时,div 容器仍保持原始图像大小

javascript - AngularJS:点击显示html表格中行之间的一些信息?

javascript - 如何从 React 中的 HOC(高阶组件)访问方法/函数而不将其作为 prop 传递?

jquery - 使用node.js向mysql数据库添加数据

javascript - 如何将图像的标题属性链接到弹出的div

jquery - 如何使用 jquery 使用 &lt;script type ="text/template"> 创建嵌入式 HTML 模板

php - 无法获取 google recaptcha v2 以防止提交表单