如何在 HTML 中的视频上添加按钮?

Posted

技术标签:

【中文标题】如何在 HTML 中的视频上添加按钮?【英文标题】:How can I add a button over a video in HTML? 【发布时间】:2020-02-29 15:55:03 【问题描述】:

这是我第一次使用 html 而非基本网站。

我有一个基于视频的社交媒体应用,我想通过 Instagram 等链接分享帖子。 该链接将是一个视频循环播放的网站,直到用户单击视频上的按钮。按下此按钮后,将播放另一个视频。

如何在视频上添加按钮,以便当我点击它时播放另一个视频? 这就是我所拥有的。

<div class="container">
                <div class="row align-items-center">
                    <div class="col-md-6 col-lg-5 order-md-2" style="">
                        <img class="mw-100 mt-lg-0 rounded" src="https://profile_picture.jpeg"   style="transform: translate3d(0px, 4px, 0px);">
                        <h3><strong class="">Cute cat</strong></h3>
                        <svg xmlns="http://www.w3.org/2000/svg"  viewBox="0 0 100 20"  class="mb-30 svg-secondary"><path d="m0 9h100v2h-100z" fill-rule="evenodd"></path></svg>
                        <p class="mb-30 lead" style="">This is a card trick I learned when I was at Magic School</p>
                        <ul class="list-unstyled padding-x2-list separate-list mb-50">                    
                        </ul>
                        <a class="btn btn-outline-warning light" href="https://apps.apple.com/us/app/sampleApp" style=""><span style=""><strong class="">  Get it now</strong></span></a>
                    </div>

                    <div class="col-md-6 mr-auto order-md-1 text-center">
                        <div class="content-box d-inline-block">
                            <img class="mw-100 mt-lg-0 rounded" src="https://example000.mp4"   style="transform: translate3d(0px, 4px, 0px);">
                        </div>
                    </div>
                </div>
            </div>

【问题讨论】:

【参考方案1】:

首先,我看到您在视频源中使用了img 标签。请改用video 标签。

Bootstrap 是一款旨在让您在开发网站 UI 时更轻松的工具。在有用的时候使用它。要在视频上显示按钮,与其说是辅助,不如说是矫枉过正。

下面,您将看到在视频上显示按钮的 HTML 和 CSS 代码。重要的是要知道:当你创建一个元素position: relative 时,所有position: absolute 的子元素都将定位在父元素内。在代码中,我们利用这种行为来显示.video-content 而不是.video

.video-view 
  position: relative;
  width: 300px;
  height: 100px;


.video-view .video 
  position: absolute;
  width: 100%;
  height: 100%;
  object-fit: cover;
  background-color: #ccc;


.video-view .video-content 
  position: absolute;
  bottom: 0px;
<div class="video-view">
  <video class="video"></video>
  <div class="video-content">
    <button>Sample</button>
  </div>
</div>

【讨论】:

下面我的回答 (***.com/a/60467246/9060223) 能解决您的问题吗?【参考方案2】:

您应该使用video HTML 标签来插入视频。阅读更多here。然后,您可以在元素 video 内使用元素 source 指定视频的来源。将source 中的属性src 设置为您视频的链接并指定其type

要创建自定义按钮,您可以创建一个同时包含视频和自定义按钮的容器。该按钮将使用 CSS 将 position 编辑为 absolute 以使其出现在视频中的正确位置(使用 CSS 调整)。然后,在按钮上附加一个单击事件侦听器以更改视频源。

下面是一个非常简单的工作示例。在悬停视频时单击带有! 的按钮以更改其来源。

const video = document.querySelector('video')
const source = document.querySelector('source')

video.appendChild(source)
video.play()

const changeVideoButton = document.querySelector('#changeVideo')
changeVideo.addEventListener('click', e => 
  video.pause()
  
  source.setAttribute('src', 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4')
  
  video.load()
  video.play()
)
#container 
  position: relative;


video 
  width: 300px;


#changeVideo 
  position: absolute;
  top: 10px;
  left: 10px;
  width: 25px;
  height: 25px;
  opacity: 0;
  transition: opacity .3s ease;
  cursor: pointer;
  
  /* Additional styles just to increase visual appeal */
  border-radius: 50%;
  background: #FFFFFFDD;
  color: red;
  font-weight: bold;
  line-height: 25px;
  text-align: center;
  /* End */


/* On hovering the video, show the button */
video:hover~#changeVideo 
  opacity: 1;


#changeVideo:hover 
  opacity: 1;
<div id="container">
  <video controls autoplay loop>
    <source src="http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4" type="video/mp4">
  </video>
  <div id="changeVideo">!</div>
</div>

【讨论】:

以上是关于如何在 HTML 中的视频上添加按钮?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 video.js 上添加新组件(按钮)?

如何在phonegap中的按钮上添加功能?

单击html中的按钮时如何将视频播放为弹出窗口

如何在 Firefox 12 HTML 5 视频中隐藏播放按钮

html5:在控件视频中添加下载按钮

如何在 HTML5 中隐藏视频标签的全屏按钮