如何添加第二个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
相关产品推荐
相关产品推荐

