如何使用 Javascript 创建多个视频弹出窗口?

问题描述 投票:0回答:1

我创建了这个,有两个视频链接会弹出相同的视频。如何添加第二个视频,以便当我单击底部链接时会弹出第二个视频?我认为我需要向函数show()添加一个参数。也许为“video”元素的每个视频创建一个单独的类。我非常感谢对这项任务的任何帮助。另外,如果您知道有关编辑 DOM 元素以及用于 CSS 网页的常见 Javascript 函数的在线资源,请告诉我。 Javascript,例如 classlist.toggle、onclick="show();"我确实计划制作一个涵盖 Javascript 的课程视频,也许是“2023 年完整的 Javascript 课程:从零到专家!”作者:乔纳斯·施梅特曼。

HTML

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Responsive Video Popups</title>
  <link rel="stylesheet" href="css/style.css">

</head>
<body>
  <section>
    <div class="home">      
      <a href="#" onclick="show();">Watch Video 1</a>      
      <a href="#" onclick="show();">Watch Video 2</a>
    </div>
    <div class="popup">
      <video src="video.mp4" controls></video>
      <img src="close.png" onclick="show();" class="close" alt="">
    </div>
  </section>
  <script>
    function show(){
      var popup = document.querySelector(".popup");
      var video = document.querySelector("video");
      popup.classList.toggle("active");
      video.pause();
      video.currentTime = 0;
    }
  </script>
  
</body>
</html>

CSS

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  font-family: Arial, Helvetica, sans-serif;
}

section {
  position: relative;
  width: 100%;
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
}

.home {
  max-width: 500px;
  padding: 15px;
  display: flex;
  flex-direction: column;
}
.home a {
  display: inline-block;
  background-color: #262626;
  color: #fff;
  text-decoration: none;
  padding: 5px 20px;
  margin: 10px;
  font-size: 20px;
  border: 2px solid #fff;
}

.popup {
  position: fixed;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.8);
  visibility: hidden;
  opacity: 0;
  z-index: 1;
}
.popup video {
  position: relative;
  max-width: 900px;
  outline: none;
  box-shadow: 0 0 10px 10px rgba(255, 255, 255, 0.4);
}
.popup .close {
  position: absolute;
  top: 30px;
  right: 30px;
  max-width: 35px;
  cursor: pointer;
  filter: invert(1);
}

.popup.active {
  visibility: visible;
  opacity: 1;
}

javascript video onclick toggle queryselector
1个回答
0
投票

试试这个。

<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
  <section>
    <div class="home">      
      <a href="#" onclick="show(1);">Watch Video 1</a>      
      <a href="#" onclick="show(2);">Watch Video 2</a>
    </div>
    <div class="popup" id="popup1">
      <video src="video1.mp4" controls></video>
      <img src="close.png" onclick="hide(1);" class="close" alt="">
    </div>
    <div class="popup" id="popup2">
      <video src="video2.mp4" controls></video>
      <img src="close.png" onclick="hide(2);" class="close" alt="">
    </div>
  </section>
  <script>
    function show(id){
      var popup = document.querySelector("#popup" + id);
      var video = popup.querySelector("video");
      popup.classList.add("active");
      video.play();
    }

    function hide(id){
      var popup = document.querySelector("#popup" + id);
      var video = popup.querySelector("video");
      popup.classList.remove("active");
      video.pause();
      video.currentTime = 0;
    }
  </script>
</body>
</html>

刚刚向每个视频弹出 div 添加了唯一 ID(例如“popup1”和“popup2”)。

© www.soinside.com 2019 - 2024. All rights reserved.