1. 程式人生 > >H5頁面中的視訊輪播(類似於banner輪播圖效果)

H5頁面中的視訊輪播(類似於banner輪播圖效果)

先說下我的需求,如下圖:
手機模型中間部分是視訊播放,當一條視訊播放完畢後,整屏會自動上滑切換到下一個視訊。

效果圖

提起輪播,我們看到的最多的就是banner輪播圖,而提起輪播圖,我會馬上想起用Swiper。
一開始為了快速開發,就想著用swiper來實現切換視訊的輪播效果,但是嘗試後發現兩個嚴重的問題:
1、使用Swiper實現輪播時,所設定的輪播時間間隔是固定的值,而視訊播放時間長短不同,因此視訊輪播是根據視訊時長而定的。
2、如果使用swiper,強制設定固定時間間隔來切換播放,這樣會導致視訊列表中的視訊會同時播放。換言之,就是剛進入頁面後,雖然頁面上顯示的是第一條視訊在播放,但後臺其實是所有視訊都在同時載入播放。
因此,swiper可以不用再考慮。

下面進入重點:

視訊播放時,何時才能切換下一條?當視訊播放完畢時。因此需要用到ended()事件來監控是否播放完畢。
輪播時要實現無縫輪播效果。

程式碼重點展示js部分:

html:

   <div class="video_list">
    <div class="video_ls"></div>
   </div>

js:

var cdnUrl = '';  //資源url

//視訊列表資料,三個視訊
var videoList = [
    {
        resid:'j1q9vb170b2769761317e270eccdfe778e0b46df.mp4'
, user_img:'user_xx.png', dialog_img:'dialog_xx.png', topic_img:'topic_xx.png' }, { resid:'j1yvqkg00b2769761317e270eccdfe778e0b46df.mp4', user_img:'user_xyj.png', dialog_img:'dialog_xyj.png', topic_img:'topic_xyj.png' }, { resid:'j2037nea006c4c1b8a8ac173362ee25ee7ec24c4.mp4'
, user_img:'user_3.png', dialog_img:'dialog_3.png', topic_img:'topic_3.png' }, ]; var leg = videoList.length; $(document).ready(function(){ //載入視訊列表 var str=''; for(var i=0;i<leg;i++){ loadvideo(videoList[i],i); } //實現無縫滾動 var clone = $(".video_ls .video_shows").first().clone(true);//克隆第一個視訊 $(".video_ls").append(clone);//複製到列表最後 var size = $('.video_shows').length; //視訊高度 var _height = $('.video_shows').outerHeight(); //初始化播放第一條 var video_show = $('.video_shows'); var video = $('.video_shows video'); video[0].load(); video[0].play(); var num =0; //當前播放視訊的下標 playlist(video); function playlist(video){ //監控當前視訊是否播放完畢 video[num].onended = function(){ //console.log("第"+(num+1)+"條視訊播放完畢") num++; if(num<video.length){ var _top = -_height*(num)+'px'; $('.video_ls').animate({'top':_top},'1500') }else{ num=1; $(".video_ls").css('top','0'); $('.video_ls').animate({'top':-_height},'1500') } video[num].load(); video[num].play(); return playlist(video); } } }) //載入視訊播放介面 function loadvideo(videodta,i){ str = ''; str += '<div class="video_shows">'; str += '<div class="userInfo"><img src="image/'+videodta.user_img+'"/></div>'; str += '<div class="dialog"><img src="image/'+videodta.dialog_img+'"/></div>'; str += '<div class="more"></div>'; str += '<div class="topic_content"><img src="image/'+videodta.topic_img+'"/></div>'; str += '<div class="phone_btm"></div>'; str += '<video id="myvideo'+(i+1)+'" class="video-js vjs-big-play-centered" poster="'+cdnUrl+videodta.resid+'?vframe/jpg/offset/0" preload="auto">'; str += '<source src="'+cdnUrl+videodta.resid+'" type="video/mp4">'; str += '</video>'; str += '</div>'; $(".video_ls").append(str); }

相關推薦

H5頁面視訊類似banner效果

先說下我的需求,如下圖: 手機模型中間部分是視訊播放,當一條視訊播放完畢後,整屏會自動上滑切換到下一個視訊。 提起輪播,我們看到的最多的就是banner輪播圖,而提起輪播圖,我會馬上想起用Swiper。 一開始為了快速開發,就想著用swiper來實

Qt QLabel 自定義文字的顏色狀態,設定為三種狀態類似Qcheckbutton裡面的checked unchecked

1  自定義設定Qlabel文字顏色狀態。 別的類可以進行類推 #ifndef QCOMPLEXLABEL_H #define QCOMPLEXLABEL_H #include <QObject> #include <QWidget> #inclu

poj 2505 A multiplication game 類似遞推思想和博弈

題目連結:poj 2505 題意:Stan and Ollie 兩人玩遊戲,Stan先手,一開始 P=1,每次玩家可以在數字 [ 2 , 9 ] 範圍內選擇一個數與p相乘,當P>=n時,此時的某玩家獲勝。   題解:我們可以這樣思考,首先我們先設 X,滿足 X*9&g

【SSH網上商城專案實戰15】執行緒、定時器同步首頁資料類似部落格定期更新排名

  轉自:https://blog.csdn.net/eson_15/article/details/51387378   上一節我們做完了首頁UI介面,但是有個問題:如果我在後臺添加了一個商品,那麼我必須重啟一下伺服器才能重新同步後臺資料,然後重新整理首頁才能同步資

android開發之&使用ViewPager加gridView實現選單按鈕分頁滑動類似QQ表情選擇翻頁效果

剛做的專案中要用到選單分頁,以前沒做過,仔細想了想,既然是分頁,肯定就少不了ViewPager,大家都知道gridView可以實現九宮格,剛好滿足我們的需求,我做的是gridview單行顯示,大家如果需要向QQ表情一樣多行顯示,直接修改資料來源就可以。 好了,上程式碼 pu

點選新增按鈕--出現一個框框類似新增學習經歷-本科-研究生

import React, { Component } from "react"; class Inner extends Component { defaultValue = { taskDescription: "", vehicleClean: "" }; c

微信小程式自定義元件TabLayout類似今日頭條的滑動選單

有了安卓開發經驗,自定義微信小程式元件簡直易如反掌。 自定義微信小程式的步驟如下: 建立四個檔案 分別是邏輯控制js,配置檔案json,佈局檔案wxml,樣式檔案wxss。 配置檔案.json的編寫 component引數:說明這個資料

QT進行檔案上傳 類似百度雲網盤

分為伺服器和客戶端 下面來具體貼出程式碼。  每一句的具體註釋都在,幫助理解: 先貼    客戶端 首先在專案檔案  .pro中新增 network widget.h #ifndef WIDGET_H #define WIDGET_H #include &l

PHPStorm 配置遠端伺服器資料夾在本地windows映象,實現程式碼自動同步類似Samba架構檔案同步功能

場景介紹:這是一種類似samba架構,也和 filezilla+xshell 模式相類似的程式碼檔案同步的模式,但是卻更加優雅,也更加方便簡潔。環境介紹:本地windows端:編輯器phpstorm遠端Linux端:centos(香港節點伺服器)LNMP一、實現檔案同步1、在

Mac上安裝homebrew類似Linux上的apt-get

apt-get是Linux上的一個重要的工具,很多軟體的安裝、解除安裝、更新都會用到它。 homebrew就是Mac上的“apt-get”啦。 但是,當前Mac上預設是沒有這個工具的,接下來記錄的是在Mac上安裝homebrew的過程。 安裝指令: cu

基於JavaScript程式碼去掉H5頁面的頭尾及廣告部分支援 Android 和 iOS

提出問題: APP中嵌入一個H5的網頁,但出現的廣告條或是無關頭尾,相當大煞風景,該如何去掉? 分析問題: 1,加入廣告條是為了讓網站存活下去,這個普通使用者無法理解,就此點到為止吧; 2,大多H5

前端視訊直播技術總結及video.js在h5頁面的應用

全手打原創,轉載請標明出處:https://www.cnblogs.com/dreamsqin/p/12557070.html,多謝,=。=~ (如果對你有幫助的話請幫我點個贊啦) 目前有一個需求是在移動端上內嵌h5實現點位的視訊直播,直播專案採用Vue編寫,後端主要輸出 RTMP 和 HLS 協議的直播流

簡單的切換頁面類似微信

stat urn ima http end elf int idt lis //在App.js中實現import React from ‘react‘; import { StyleSheet, Text, View } from ‘react-native‘; impo

關於H5頁面生成圖片的兩種方式!

ima 前端 不能 圖片 項目 自定義 dom對象 技術分享 ron 前言: 我們在做項目過程中,經常會遇到自定義生成一張圖片並可以長按保存。長按保存圖片在微信等瀏覽器中默認就有,那麽對於生成圖片的有哪些方式呢? 方法一: 利用canvas繪制圖形,然後生成圖片 代碼如下:

小程式的scroll-view元件的點選自動滑動效果類似微信流量充值滑塊的效果

廢話不多說,直接上圖吧!我的目的是想要達到滑鼠點選每項時,滑塊會自動滑動,具體可開啟微信流量充值體驗體驗。但是小程式scroll-view元件並不能達到這個效果,必須手動拖動,才能滑動,網上找了許久沒有找到相關的程式碼片段,最終發現zanUI有這個元件,參照這個元件的tab元件來完成的。zanU

h5頁面使用JSBridge需要注意的點

產品提了一個新需求,需要每個h5頁面都具有分享功能,因為在每一個h5頁面中都已經引入了一個公用的檔案(該檔案的主要作用就是引入一個公用的css和js庫),所以,為了實現分享的功能,在該公用的檔案中加入了分享功能的程式碼。 common.js <link rel="stylesh

oracle的區間查詢類似mysql的limit

那麼Oracle中有limit嗎,答案是沒有。oracle中可以通過rownumber  Oracle使用rownum的關鍵字來實現這種查詢:  首先我們假設有一個地域資訊表area,其表結構如下圖所示:   表中的資料如下圖所示(select * from a

前端:微信支付和支付寶支付在pc端和h5頁面的應用

1:h5微信支付 使用的是https://pay.weixin.qq.com/wiki/doc/api/index.html  中的 (1):公司需要首先要配置公眾號微信支付地址和測試白名單(支付的時候顯示這個支付頁面沒許可權有可能是這個原因) 如上圖http://ww

HTML往頁面加入背景音樂

第一種:<bgsound>標籤(只適用於IE瀏覽器) 在<head> </head> 裡面加入<bgsound src="音樂url" loop="-1"> loop=-1意思是設定為自動播放; 第二種:<audio>標籤(適合

獲取頁面視訊的載入進度,音/視訊載入過程

當音訊/視訊處於載入過程中時,會依次發生以下事件: loadstart 定義和用法 當瀏覽器開始尋找指定的音訊/視訊時,會發生 loadstart 事件。即當載入過程開始時。 durationchange 定義和用法 當指定音訊/視訊的時長資料發生變化時,發生 dur