You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何添加第二个YouTube视频?现有单视频嵌入代码扩展求助

实现多延迟加载YouTube视频的方法

原代码的JS逻辑已经通过document.querySelectorAll(".embed-youtube")选中了所有带该类名的容器,并且循环处理每个容器,所以添加第二个视频只需要补充对应的HTML结构即可,无需修改JS和CSS代码。

步骤说明

  • 保留原有的JavaScript和CSS代码不变
  • 在HTML中新增一个.embed-youtube容器,将data-video-id替换为你需要的第二个YouTube视频ID(视频ID可从YouTube视频链接中提取,比如https://www.youtube.com/watch?v=XXX里的XXX)

完整代码示例

JavaScript代码

(function(){
  let YouTubeContainers = document.querySelectorAll(".embed-youtube");

  // 遍历所有YouTube容器
  for (let i = 0; i < YouTubeContainers.length; i++) {
    let container = YouTubeContainers[i];
    let imageSource = "https://img.youtube.com/vi/"+ container.dataset.videoId +"/sddefault.jpg";

    // 异步加载缩略图
    let image = new Image();
    image.src = imageSource;
    image.addEventListener("load", function() {
      container.appendChild(image);
    });

    // 点击容器时加载嵌入的YouTube视频
    container.addEventListener("click", function() {
      let iframe = document.createElement( "iframe" );

      iframe.setAttribute("frameborder", "0");
      iframe.setAttribute("allowfullscreen", "");
      iframe.setAttribute("allow", "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture");
      // 必须添加autoplay参数,否则用户需要再次点击视频才能播放
      iframe.setAttribute("src", "https://www.youtube.com/embed/"+ this.dataset.videoId +"?rel=0&showinfo=0&autoplay=1");

      // 清除缩略图并加载YouTube播放器
      this.innerHTML = "";
      this.appendChild( iframe );
    });
  }
})();

CSS代码

.embed-youtube {
  background-color: #000;
  margin-bottom: 30px;
  position: relative;
  padding-top: 56.25%;
  overflow: hidden;
  cursor: pointer;
}
.embed-youtube img {
  width: 100%;
  top: -16.84%;
  left: 0;
  opacity: 0.7;
}
.embed-youtube .embed-youtube-play {
  width: 68px;
  height: 48px;
  background-color: #333;
  box-shadow: 0 0 30px rgba( 0,0,0,0.6 );
  z-index: 1;
  opacity: 0.8;
  border-radius: 6px;
}
.embed-youtube .embed-youtube-play:before {
  content: "";
  border-style: solid;
  border-width: 15px 0 15px 26.0px;
  border-color: transparent transparent transparent #fff;
}
.embed-youtube img,
.embed-youtube .embed-youtube-play {
  cursor: pointer;
}
.embed-youtube img,
.embed-youtube iframe,
.embed-youtube .embed-youtube-play,
.embed-youtube .embed-youtube-play:before {
  position: absolute;
}
.embed-youtube .embed-youtube-play,
.embed-youtube .embed-youtube-play:before {
  top: 50%;
  left: 50%;
  transform: translate3d( -50%, -50%, 0 );
}
.embed-youtube iframe {
  height: 100%;
  width: 100%;
  top: 0;
  left: 0;
}

.embed-youtube .embed-youtube-play:hover {
  background-color: #f00;
}

HTML代码(包含两个视频)

<!-- 第一个视频容器 -->
<div class="embed-youtube" data-video-id="djV11Xbc914">
  <!-- 播放按钮图标容器 -->
  <div class="embed-youtube-play"></div>
</div>

<!-- 第二个视频容器 -->
<div class="embed-youtube" data-video-id="替换为你的第二个视频ID">
  <div class="embed-youtube-play"></div>
</div>

关键说明

  • 每个视频容器的data-video-id必须对应不同的YouTube视频ID
  • 点击任意容器都会加载对应视频,自动替换掉当前容器内的缩略图和播放按钮
  • 原代码的延迟加载逻辑会自动处理所有新增的.embed-youtube容器

内容的提问来源于stack exchange,提问作者user17631451

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 22:10:33