Scrolled-Video with Card Layout

此專題展示如何透過滾動來控制影片播放進度

滾動探索內容 ↓

Core Design - 核心設計

1. Fixed Video Background:影片使用 position: fixedz-index: 1,固定在背景層

2. Flying Card Layout:使用 Bootstrap Grid 的 col-md-6 創造 3:6:3 佈局,卡片浮在影片上方

3. Transparent Sections:每個 section 是 100vh 全透明,只有卡片區域有半透明背景

4. Z-index Layering:使用 z-index: 10 確保內容在影片上方

JavaScript - 影片滾動控制

1. 計算播放區間:
videoStartPosition = videoSection 頂部位置
videoEndPosition = endingSection 頂部位置

2. 監聽滾動事件:
使用 jQuery 的 $(window).scroll() 監聽頁面滾動

3. 影片顯示控制:
• 在 leading section:影片隱藏 removeClass('active')
• 在 video section:影片顯示並根據滾動比例播放
• 在 ending section:影片隱藏

4. 計算播放進度:
scrollProgress = (當前位置 - 起始位置) / 播放區間長度
videoElement.currentTime = duration × scrollProgress

Bootstrap Grid - 響應式佈局

使用 Bootstrap Grid System:
container - 提供響應式寬度容器
row - 創建水平行佈局
col-md-6 - 在中等螢幕及以上佔據 6/12 (50%) 寬度
justify-content-center - 將列置中對齊

Flying Card 效果:
• Section 是 100vh 全透明背景
• 只有 col-md-6 內的卡片有半透明黑色背景
• 卡片高度自適應內容,浮在影片上方
• 創造輕盈的漂浮視覺效果

Prompts

從零開始的完整開發流程:

      • 頁面設定: 建立一個使用 Bootstrap 5jQuery 的 HTML5 網頁。 頁面包含開頭的 leading section(100vh,高度滿版,背景為深色) 以及結尾的 ending section(100vh,背景為深色)。
      • 影片背景: 在中間區域加入一個 <video> 元素作為背景,設定 position: stickytop: 0, 讓影片在滾動時固定在畫面上。 使用 object-fit: cover 讓影片自動填滿整個視窗。 加上 preload="auto" 以預先載入影片、確保播放順暢。
      • 影片區與卡片設計: 在開頭與結尾之間建立 video-section,背景為黑色。 內含三個 card-section,每個區塊高度為 100vh。 使用 Flexbox(display: flexalign-items: centerjustify-content: center)讓內容垂直置中。 採用 Bootstrap Grid(col-md-6)形成 3:6:3 的版面,讓內容卡片置於中央。 每張卡片使用不同透明度的黑色背景(rgba(0,0,0,0.8 / 0.6 / 0.4)、加上圓角與陰影效果。 設定 z-index: 10 讓卡片顯示在影片之上。
      • 滾動互動(JavaScript): 使用 jQuery 監聽滾動事件,計算 video-section 的相對位置。 當區塊頂端距離視窗底部小於等於 50vh 時開始播放影片。 播放範圍為進入 50vh 至 video-section 底部之間。 根據滾動進度計算 scrollProgress,設定 videoElement.currentTime = duration × scrollProgress。 在進入 leading section 前維持影片第一幀,結束後維持最後一幀。
      • 補充內容: 在影片區結束後加入一個 100vh 的 spacer div,讓影片有足夠播放空間。 每張卡片中可加入技術說明文字,介紹 核心設計概念JavaScript 邏輯Bootstrap 網格系統

關鍵:逐步迭代,從基本結構開始,再加入互動效果,最後優化細節