偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

滾動(dòng)視頻新玩法,打造獨(dú)特的滾動(dòng)視頻體驗(yàn)

開發(fā) 前端
對于網(wǎng)頁而言,圖片與視頻是視覺吸引的關(guān)鍵要素,然而,僅僅依靠手動(dòng)控制的靜態(tài)圖像和視頻可能會(huì)變得單調(diào)。本文打破了常規(guī)思維,探討了如何將視頻與頁面滾動(dòng)完美集成。

前言

對于網(wǎng)頁而言,圖片與視頻是視覺吸引的關(guān)鍵要素,然而,僅僅依靠手動(dòng)控制的靜態(tài)圖像和視頻可能會(huì)變得單調(diào)。本文打破了常規(guī)思維,探討了如何將視頻與頁面滾動(dòng)完美集成。

video API

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

簡單使用

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

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

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

視頻屬性

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

該currentTime是本文滾動(dòng)效果的關(guān)鍵屬性,因?yàn)樗梢枣溄拥綕L動(dòng)值等屬性。

視頻方法

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

視頻事件監(jiān)聽器

  • timeupdate:當(dāng)前播放位置改變時(shí)觸發(fā)。
  • ended:視頻結(jié)束時(shí)觸發(fā)。
  • loadedmetadata:加載元數(shù)據(jù)(例如持續(xù)時(shí)間或音量)時(shí)觸發(fā)。
  • progress:當(dāng)瀏覽器加載視頻數(shù)據(jù)時(shí)觸發(fā)。

了解完以上視頻相關(guān)API,我們就可以來實(shí)現(xiàn)各種視頻相關(guān)效果

視頻可見時(shí)自動(dòng)播放

比如網(wǎng)站上有一個(gè)視頻想要自動(dòng)播放,但需要滾動(dòng)到該視頻。如果我們能夠檢測到它何時(shí)進(jìn)入用戶的視圖,我們就可以直接啟動(dòng)它,而不是在它不可見時(shí)播放它。

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);

圖片圖片

使用滾動(dòng)值播放視頻

這里才是本文的重點(diǎn),當(dāng)用戶滾動(dòng)時(shí)播放視頻。這將向前和向后進(jìn)行播放。這種效果很常見,可以產(chǎn)生 3D 模態(tài)在滾動(dòng)上移動(dòng)的錯(cuò)覺。

計(jì)算滾動(dòng)條

為了實(shí)現(xiàn)滾動(dòng)效果,我們需要?jiǎng)?chuàng)建一個(gè)反映視頻長度的滾動(dòng)條,這里我們可以使用上面提到的APIloadedmetadata來實(shí)現(xiàn)

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

計(jì)算滾動(dòng)位置換算視頻進(jìn)度

const scrollY = window.scrollY;

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

使視頻播放與滾動(dòng)進(jìn)度同步

使用計(jì)算出的百分比來設(shè)置currentTime視頻的播放時(shí)間

video.currentTime = video.duration * percentage;

平滑效果

使用requestAnimationFrame功能來增強(qiáng)滾動(dòng)過程中視頻播放的平滑度。

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);
};

圖片 圖片

責(zé)任編輯:武曉燕 來源: 前端南玖
相關(guān)推薦

2022-08-16 08:37:09

視頻插幀深度學(xué)習(xí)

2015-11-23 17:44:08

微軟Azure亦非云

2021-01-21 14:50:01

微信紅包移動(dòng)應(yīng)用

2022-01-24 17:40:04

微信語音移動(dòng)應(yīng)用

2011-09-02 10:14:10

JQuery滾動(dòng)Xslider

2021-01-12 10:16:42

CSS 容器優(yōu)化滾動(dòng)

2010-12-15 17:44:59

思科虛擬化視頻

2011-08-15 10:37:21

視頻極速流量

2025-08-20 16:21:30

2011-02-16 11:18:15

思科無線網(wǎng)絡(luò)視頻

2013-03-30 22:27:59

2013-03-25 13:56:22

Windows Blu

2024-07-18 19:30:58

2013-02-21 16:06:50

Ubuntu上手體驗(yàn)平板

2024-11-21 20:57:01

2012-06-26 13:17:49

PowerSmart視頻編碼

2011-12-13 20:39:14

Android 4.0

2013-04-02 13:04:07

ListView平滑滾
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號