YouTube 视频库和滑块集成指南
## 介绍
视频内容是展示产品、提供技术教程和建立用户信任的最有效工具之一。 PolyCMS 具有高度优化和高性能的 YouTube Gallery 块,允许您在任何页面上嵌入多视频布局。
YouTube 图库专为快速加载、响应灵活性和复杂的播放监控而定制设计,而不是加载繁重、缓慢的单个视频嵌入,从而拖累页面分数。
多种布局配置
YouTube Gallery 块支持 4 种定制布局,以满足各种设计美学和内容密度需求:
1.连续自动播放滑块布局(slider)
优雅、高参与度的水平滚动轮播布局。它支持:
-
Columns (
sliderVisibleItems):设置轮播框架中一次可见的视频数量。 -
自动播放控制:以标准间隔自动滚动轮播。
-
连续循环模式:使用“requestAnimationFrame”渲染循环以平滑的逐像素滚动方式无限循环视频幻灯片。
-
滚动方向:支持从左到右(
left)和从右到左(right)滚动路径。
2. 互动英雄画廊布局(画廊)
专为教程、产品演示和展示而设计:
-
英雄框架:一个大的、突出的主视频播放器位于顶部。
-
缩略图行:视频缩略图的水平网格位于播放器下方。
-
即时交换:单击任何缩略图都会触发优化的内联 JavaScript 事件,该事件会立即更新英雄播放器的源 URL,而无需刷新页面。
3.响应式网格布局(grid)
默认布局。它会自动将您的视频嵌入分布在干净、现代的网格内。它是使用轻量级 CSS 网格规则构建的,可以自动适应用户的视口:
-
移动设备:将视频堆叠在单列中以保持可读性。
-
平板电脑和台式机:使用标准“16px”装订线以协调的 2 列或 3 列布局组织视频。
4. 简化的列表布局(list)
经典的堆叠流程。它垂直对齐视频,保持严格的“16:9”宽高比。这非常适合分步视频课程或顺序课程指南。
高级 YouTube Iframe API 集成
YouTube 图库滑块具有优质的智能播放监控引擎,可保证完美的用户体验。
标准轮播的挑战
在大多数网络轮播中,如果用户单击自动播放滑块内的视频“播放”,滑块将继续滚动,将活动视频移出视口,同时音频继续在后台播放。
PolyCMS 解决方案
PolyCMS 通过动态加载和集成 YouTube Iframe API 解决了这个问题:
graph TD
A[Slider Autoplay Active] --> B[Load YouTube Iframe API]
B --> C[Initialize YT.Player on Iframe]
C --> D[Monitor state changes via onStateChange]
D --> E{Video state = PLAYING or BUFFERING?}
E -->|Yes| F[Pause Slider Autoplay]
E -->|No| G{Are other videos playing?}
G -->|Yes| F
G -->|No| H[Resume Slider Autoplay]
-
API 加载:渲染器自动检测自动播放或连续滑块模式是否处于活动状态,并注入 YouTube Iframe API 脚本一次。
-
播放器初始化:它挂钩到
onYouTubeIframeAPIReady并在滑块内的每个视频帧上注册一个YT.Player实例。 -
智能播放状态检测:它监视状态变化(
onStateChange)。当视频开始(1 = PLAYING)或开始缓冲(3 = BUFFERING)时,脚本立即将全局播放标志设置为“true”,立即暂停滑块,以便用户可以不间断地观看视频。 -
自动恢复:一旦视频暂停、结束或遇到错误,脚本就会重置标志并平滑地恢复滑块的轮播移动。
现场互动演示
为了展示 PolyCMS YouTube Gallery 块强大的样式和交互功能,下面是所有支持的布局模式的实时功能演示,优先考虑我们的高级滑块和图库布局。
1. 高级自动播放滑块
高级水平旋转木马滑块。它支持列数、幻灯片自动触发、连续滚动和方向的自定义参数。
- 播放状态锁定 (A11y):内置 YouTube Iframe API 事件侦听器会在视频开始播放时立即暂停滚动操作,以便读者可以不受干扰地观看,并在视频暂停后恢复幻灯片移动。
示例 A:3 列连续从左到右滚动
同时渲染 3 个可见视频,并在从左到右的方向上进行平滑、连续的逐像素滚动循环(内容向左移动):
如何通过 HTML/Markdown 实现:
<div data-youtube-gallery="" layout="slider" data-urls='["https://www.youtube.com/watch?v=hSYz-rvOtl8","https://www.youtube.com/watch?v=UE3_Lgj4FqA","https://www.youtube.com/watch?v=C_QAOi0_qpg","https://www.youtube.com/watch?v=9P4Tq1xR3t8","https://www.youtube.com/watch?v=ez5WoORf7KM","https://www.youtube.com/watch?v=HWWotdfNWyk"]' data-slider-visible-items="3" data-slider-autoplay="true" data-slider-continuous="true" data-slider-direction="left"></div>
示例 B:3 列连续从右到左滚动
同时渲染 3 个可见视频,并从右到左方向连续逐像素滚动循环(内容向右移动):
如何通过 HTML/Markdown 实现:
<div data-youtube-gallery="" layout="slider" data-urls='["https://www.youtube.com/watch?v=hSYz-rvOtl8","https://www.youtube.com/watch?v=UE3_Lgj4FqA","https://www.youtube.com/watch?v=C_QAOi0_qpg","https://www.youtube.com/watch?v=9P4Tq1xR3t8","https://www.youtube.com/watch?v=ez5WoORf7KM","https://www.youtube.com/watch?v=HWWotdfNWyk"]' data-slider-visible-items="3" data-slider-autoplay="true" data-slider-continuous="true" data-slider-direction="right"></div>
示例 C:2 列标准自动播放(从左到右对齐)
同时渲染 2 个可见视频。 5 秒后按顺序向左滑动,而不是连续滚动,干净利落地捕捉到每个显卡的中心:
如何通过 HTML/Markdown 实现:
<div data-youtube-gallery="" layout="slider" data-urls='["https://www.youtube.com/watch?v=hSYz-rvOtl8","https://www.youtube.com/watch?v=UE3_Lgj4FqA","https://www.youtube.com/watch?v=C_QAOi0_qpg","https://www.youtube.com/watch?v=9P4Tq1xR3t8","https://www.youtube.com/watch?v=ez5WoORf7KM","https://www.youtube.com/watch?v=HWWotdfNWyk"]' data-slider-visible-items="2" data-slider-autoplay="true" data-slider-continuous="false" data-slider-direction="left"></div>
示例 D:2 列标准自动播放(从右到左对齐)
同时渲染 2 个可见视频。 5 秒后按顺序向右滑动,而不是连续滚动,干净利落地捕捉到每个显卡的中心:
如何通过 HTML/Markdown 实现:
<div data-youtube-gallery="" layout="slider" data-urls='["https://www.youtube.com/watch?v=hSYz-rvOtl8","https://www.youtube.com/watch?v=UE3_Lgj4FqA","https://www.youtube.com/watch?v=C_QAOi0_qpg","https://www.youtube.com/watch?v=9P4Tq1xR3t8","https://www.youtube.com/watch?v=ez5WoORf7KM","https://www.youtube.com/watch?v=HWWotdfNWyk"]' data-slider-visible-items="2" data-slider-autoplay="true" data-slider-continuous="false" data-slider-direction="right"></div>
2.互动英雄画廊布局
最适合产品展示、登陆页面标题或仪表板浏览。它在顶部设置了一个主活动英雄视频框架,并在其下方排列了详细的视频缩略图。单击任何缩略图都会触发一个快速脚本,立即交换英雄 iframe 源,而无需加载新页面。
这是现场画廊布局:
如何通过 HTML/Markdown 实现:
<div data-youtube-gallery="" layout="gallery" data-urls='["https://www.youtube.com/watch?v=hSYz-rvOtl8","https://www.youtube.com/watch?v=UE3_Lgj4FqA","https://www.youtube.com/watch?v=C_QAOi0_qpg","https://www.youtube.com/watch?v=9P4Tq1xR3t8","https://www.youtube.com/watch?v=ez5WoORf7KM","https://www.youtube.com/watch?v=HWWotdfNWyk"]'></div>
3.响应式网格布局
非常适合在紧凑的结构化矩阵中列出多个视频。它构建在 CSS 网格之上,动态适应用户的屏幕尺寸:在移动屏幕上以单列呈现,并在桌面上自动分布为 2 列或 3 列矩阵。
这是正在运行的实时网格画廊:
如何通过 HTML/Markdown 实现:
<div data-youtube-gallery="" layout="grid" data-urls='["https://www.youtube.com/watch?v=hSYz-rvOtl8","https://www.youtube.com/watch?v=UE3_Lgj4FqA","https://www.youtube.com/watch?v=C_QAOi0_qpg","https://www.youtube.com/watch?v=9P4Tq1xR3t8","https://www.youtube.com/watch?v=ez5WoORf7KM","https://www.youtube.com/watch?v=HWWotdfNWyk"]'></div>
4. 简化的列表布局
对于连续内容、视频课程或分步视频教程非常有效。视频在统一的流中垂直堆叠,在卡之间保留舒适的填充。
这是实时列表布局:
如何通过 HTML/Markdown 实现:
<div data-youtube-gallery="" layout="list" data-urls='["https://www.youtube.com/watch?v=hSYz-rvOtl8","https://www.youtube.com/watch?v=UE3_Lgj4FqA","https://www.youtube.com/watch?v=C_QAOi0_qpg","https://www.youtube.com/watch?v=9P4Tq1xR3t8","https://www.youtube.com/watch?v=ez5WoORf7KM","https://www.youtube.com/watch?v=HWWotdfNWyk"]'></div>