成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

滾動視頻新玩法,打造獨特的滾動視頻體驗

開發 前端
對于網頁而言,圖片與視頻是視覺吸引的關鍵要素,然而,僅僅依靠手動控制的靜態圖像和視頻可能會變得單調。本文打破了常規思維,探討了如何將視頻與頁面滾動完美集成。

前言

對于網頁而言,圖片與視頻是視覺吸引的關鍵要素,然而,僅僅依靠手動控制的靜態圖像和視頻可能會變得單調。本文打破了常規思維,探討了如何將視頻與頁面滾動完美集成。

video API

在這之前,我們需要先來了解視頻的相關屬性及方法。

簡單使用

以下是使用 HTML 元素展示視頻的簡單方法

<video controls>
  <source src="video.mp4" type="video/mp4" />
  <source src="video.webm" type="video/webm" />
</video>

這里最重要的屬性是controls, 該屬性允許用戶播放/暫停和控制其他視頻元素。如果刪除此選項,用戶將無法手動控制視頻。該<video>元素可以包含多個<source>元素,以便可以根據查看站點的瀏覽器加載不同的格式。

視頻屬性

  • 視頻持續時間:這將返回視頻的總持續時間(以秒為單位)。
const videoDuration = video.duration;
  • 控制自動播放:加載后,可以獲取或設置視頻是否應自動開始播放。
const AutoplayEnabled = video.autoplay;  // 獲取
video.autoplay = true;  // 設置
  • 獲取和設置音量:獲取當前音量并設置它(從 0.0 到 1.0)。
const currentVolume = video.volume;
video.volume = 0.75;
  • 當前時間:通過操作屬性跳轉到視頻中的特定點currentTime。
video.currentTime = 30;   // 將視頻跳轉到30s的位置

該currentTime是本文滾動效果的關鍵屬性,因為它可以鏈接到滾動值等屬性。

視頻方法

  • 播放和暫停:使用這些功能,可以播放和暫停視頻。例如,這些功能可以鏈接到自定義按鈕。
video.play(); 
video.pause();
  • 加載:可以使用此方法重新加載視頻。
video.load();
  • 操縱控件:還可以通過 JavaScript 操縱控件屬性。
video.removeAttribute("controls");

視頻事件監聽器

  • timeupdate:當前播放位置改變時觸發。
  • ended:視頻結束時觸發。
  • loadedmetadata:加載元數據(例如持續時間或音量)時觸發。
  • progress:當瀏覽器加載視頻數據時觸發。

了解完以上視頻相關API,我們就可以來實現各種視頻相關效果

視頻可見時自動播放

比如網站上有一個視頻想要自動播放,但需要滾動到該視頻。如果我們能夠檢測到它何時進入用戶的視圖,我們就可以直接啟動它,而不是在它不可見時播放它。

const video = document.querySelector('video');
const observer = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      video.play();
    } else {
      video.pause();
    }
  })
}, {
  threshold: 0.5
});
observer.observe(video);

圖片圖片

使用滾動值播放視頻

這里才是本文的重點,當用戶滾動時播放視頻。這將向前和向后進行播放。這種效果很常見,可以產生 3D 模態在滾動上移動的錯覺。

計算滾動條

為了實現滾動效果,我們需要創建一個反映視頻長度的滾動條,這里我們可以使用上面提到的APIloadedmetadata來實現

const video = document.querySelector('video');
const container = document.querySelector('.container');
const speed = 250 // 播放速度
video.addEventListener('loadedmetadata', () => {
  container.style.height = video.duration * speed + 'px';
})

計算滾動位置換算視頻進度

const scrollY = window.scrollY;

const height = document.documentElement.scrollHeight - window.innerHeight;
const percentage = (scrollY / height);

使視頻播放與滾動進度同步

使用計算出的百分比來設置currentTime視頻的播放時間

video.currentTime = video.duration * percentage;

平滑效果

使用requestAnimationFrame功能來增強滾動過程中視頻播放的平滑度。

const playVideo = () => {

  const scrollY = window.scrollY;

  const height = document.documentElement.scrollHeight - window.innerHeight;
  const percentage = (scrollY / height);

  video.currentTime = video.duration * percentage;
  window.requestAnimationFrame(playVideo);
};

圖片 圖片

責任編輯:武曉燕 來源: 前端南玖
相關推薦

2022-08-16 08:37:09

視頻插幀深度學習

2015-11-23 17:44:08

微軟Azure亦非云

2021-01-21 14:50:01

微信紅包移動應用

2022-01-24 17:40:04

微信語音移動應用

2010-12-15 17:44:59

思科虛擬化視頻

2021-01-12 10:16:42

CSS 容器優化滾動

2011-09-02 10:14:10

JQuery滾動Xslider

2011-08-15 10:37:21

視頻極速流量

2011-02-16 11:18:15

思科無線網絡視頻

2013-03-25 13:56:22

Windows Blu

2013-03-30 22:27:59

2013-02-21 16:06:50

Ubuntu上手體驗平板

2024-07-18 19:30:58

2024-11-21 20:57:01

2012-06-26 13:17:49

PowerSmart視頻編碼

2011-12-13 20:39:14

Android 4.0

2016-03-07 13:22:33

無界信息網

2024-03-25 07:57:10

ChatGPTPromote人工智能
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产真实乱对白精彩久久小说 | 国产精品射 | 亚洲三级av | 亚洲精品一区二三区不卡 | 免费在线观看毛片 | 欧美日韩亚洲一区 | 日本中文字幕视频 | 日韩一级黄色毛片 | 欧美精品一区二区三区在线播放 | 在线午夜 | 亚洲大片 | 欧美日韩一区二区电影 | 日韩一区二区免费视频 | 亚洲影音 | 国产精品久久久久久久久久久久久久 | 99国产精品99久久久久久 | 国产在线成人 | 在线 丝袜 欧美 日韩 制服 | 日韩精品极品视频在线观看免费 | 99热视| 欧美二区三区 | 日本不卡一区二区三区在线观看 | 日日av| 国产精品久久久久久婷婷天堂 | 成人午夜免费在线视频 | 国产毛片久久久 | 一区二区三区久久久 | 亚洲大片在线观看 | 欧洲性生活视频 | 激情五月婷婷丁香 | 午夜精品视频在线观看 | 国产超碰人人爽人人做人人爱 | 精品欧美一区二区久久久伦 | 日日艹夜夜艹 | 国产精品18久久久久久白浆动漫 | 久久99精品久久久久久琪琪 | 免费看啪啪网站 | 99精品九九 | 无吗视频 | 精品久久久久久久久久久 | yeyeav |