您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

在banner轮播基础上实现播放视频功能

时间:2022-07-29 11:34:15  来源:  作者:东少笔记

示例简介

本文介绍在banner轮播基础上实现播放视频功能,有两种播放方式:

1、点击播放按钮,在banner图位置播放视频(效果如下);

2、点击播放按钮,全屏播放视频。

 

实现过程

1、两种播放方式,css样式共用如下:

* {  padding: 0;  margin: 0;}.swiper-contAIner {  width: 100%;  height: 211px;}.video {  position: absolute;  z-index: 1;  top: 0;  left: 0;  width: 100%;  height: 100%;  display: none;  background-color: rgba(0, 0, 0, 0.5);}.loading-box {  width: 100%;  position: absolute;  top: 0;  left: 0;  height: 100%;  font-size: 0;}.loading-box .video-img {  width: 100%;  height: 100%;}.loading-box .palying-img {  position: absolute;  top: 50%;  left: 50%;  transform: translateX(-50%) translateY(-50%);  opacity: 1;  transition: opacity 0.3s;}.loading-box .loading-img {  position: absolute;  top: 50%;  left: 50%;  transform: translateX(-50%) translateY(-50%);  opacity: 0;  transition: opacity 0.3s;}.loading-box.loading .loading-img {  animation: loading 1s infinite;  -webkit-animation: loading 1s infinite;  opacity: 1;}.loading-box.loading .palying-img {  display: none;}.diy-buttons {  overflow: hidden;  text-align: center;}.diy-buttons a {  float: left;  width: 50%;}@keyframes loading {  from {    transform: translateX(-50%) translateY(-50%) rotate(0deg);  }  to {    transform: translateX(-50%) translateY(-50%) rotate(360deg);  }}

2、第一种播放方式,html和js代码如下:

1)“onSlideChangeEnd”用来轮播结束回调函数“removeLoading”,移除加载效果,解决切换过快有时候还显示加载效果;

2)由于swiper为了循环轮播,复制了多一份数据,所以里面的video获取未使用ID;

3)监听video的状态“play”和“pause”来控制轮播或暂停轮播,增加体验。

<!DOCTYPE html><html lang="en"><head>  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  <meta name="renderer" content="webkit">  <meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1" />  <title>banner轮播视频</title>  <link rel="shortcut icon" href="#" />  <link rel="stylesheet" type="text/css" href="css/style.css" />  <link href="css/swiper.min.css" rel="stylesheet"></head><body>  <div class="banner">    <div class="swiper-container">      <div class="swiper-wrApper">        <div class="swiper-slide">          <video type="video/mp4" width="100%" height="211" id="video-1" class="video" src="video/1.mp4" webkit-playsinline="true" playsinline="true" x5-video-player-type="h5" x5-video-orientation="portrait" x5-video-player-fullscreen="true" onplaying="removeLoading()"></video>          <div class="loading-box video-play" data-id="video-1">            <img class="video-img" alt="" src="img/1.jpg">            <img src="img/palying.png" alt="" class="palying-img">            <img src="img/load-c.png" alt="" class="loading-img">          </div>        </div>        <div class="swiper-slide">          <video type="video/mp4" width="100%" height="211" id="video-2" class="video" src="video/2.mp4" webkit-playsinline="true" playsinline="true" x5-video-player-type="h5" x5-video-orientation="portrait" x5-video-player-fullscreen="true" onplaying="removeLoading()"></video>          <div class="loading-box video-play" data-id="video-2">            <img class="video-img" alt="" src="img/2.jpg">            <img src="img/palying.png" alt="" class="palying-img">            <img src="img/load-c.png" alt="" class="loading-img">          </div>        </div>      </div>    </div>  </div>  <script src="js/swiper.min.js"></script>  <script src="js/jquery-1.12.4.min.js"></script>  <script>  $(function() {    // 设置swiper参数    var mySwiper = new Swiper('.swiper-container', {      autoplay: 3000, // 3000          loop: true, // 循环模式选项      pagination: {        el: '.swiper-pagination',      },      onSlideChangeEnd: function() {        removeLoading();      }    });    $('.video-play').click(function(e) {            $('.video').css('display', 'none');      var video = $(this).siblings('video.video');      video.css('display', 'block');      playVideo(mySwiper, video);    });  });  // 全屏播放视频函数  function playVideo(mySwiper, video) {    $('.loading-box').addClass('loading');    video[0].play();    // 监听播放状态    video.on('play', function() {      mySwiper.stopAutoplay();    });    // 监听暂停状态    video.on('pause', function() {      mySwiper.startAutoplay();      $('.video').css('display', 'none');    });  }  function removeLoading() {    $('.loading-box').removeClass('loading');  }</script></body></html>

3、第二种播放方式,html和js代码如下:

1)使用“webkitEnterFullScreen”全屏播放,兼容性比较好,可以在Android/ target=_blank class=infotextkey>安卓和苹果正常使用。

<!DOCTYPE html><html lang="en"><head>  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  <meta name="renderer" content="webkit">  <meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1" />  <title>banner轮播视频</title>  <link rel="shortcut icon" href="#" />  <link rel="stylesheet" type="text/css" href="css/style.css" />  <link href="css/swiper.min.css" rel="stylesheet"></head><body>  <div class="banner">    <div class="swiper-container">      <div class="swiper-wrapper">        <div class="swiper-slide">          <video type="video/mp4" width="100%" height="211" id="video-1" class="video" src="video/1.mp4" webkit-playsinline="true" playsinline="true" x5-video-player-type="h5" x5-video-orientation="portrait" x5-video-player-fullscreen="true" onplaying="removeLoading()" onwebkitfullscreenchange="fullScreenChange(event)"></video>          <div class="loading-box video-play" data-id="video-1">            <img class="video-img" alt="" src="img/1.jpg">            <img src="img/palying.png" alt="" class="palying-img">            <img src="img/load-c.png" alt="" class="loading-img">          </div>        </div>        <div class="swiper-slide">          <video type="video/mp4" width="100%" height="211" id="video-2" class="video" src="video/2.mp4" webkit-playsinline="true" playsinline="true" x5-video-player-type="h5" x5-video-orientation="portrait" x5-video-player-fullscreen="true" onplaying="removeLoading()" onwebkitfullscreenchange="fullScreenChange(event)"></video>          <div class="loading-box video-play" data-id="video-2">            <img class="video-img" alt="" src="img/2.jpg">            <img src="img/palying.png" alt="" class="palying-img">            <img src="img/load-c.png" alt="" class="loading-img">          </div>        </div>      </div>    </div>  </div>  <script src="js/swiper.min.js"></script>  <script src="js/jquery-1.12.4.min.js"></script>  <script>  $(function() {    // 设置swiper参数    var mySwiper = new Swiper('.swiper-container', {      autoplay: 3000, // 3000          loop: true, // 循环模式选项      pagination: {        el: '.swiper-pagination',      }    });    $('.video-play').click(function(e) {      var idName = e.currentTarget.dataset.id;      $('#' + idName).css('display', 'block');      playVideo(idName);    });  });  // 全屏播放视频函数  async function playVideo(idName) {    $('.loading-box').addClass('loading');    var video = document.getElementById(idName);    await video.play()    video.webkitEnterFullScreen()  }  function removeLoading() {    $('.loading-box').removeClass('loading');  }  function fullScreenChange(e) {    $('.loading-box').removeClass('loading');    var video = document.getElementById(e.target.id);    if (!video.webkitDisplayingFullscreen) {      video.pause();      $('.video').css('display', 'none');    }  }</script></body></html>


Tags:播放视频   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
在banner轮播基础上实现播放视频功能
示例简介本文介绍在banner轮播基础上实现播放视频功能,有两种播放方式:1、点击播放按钮,在banner图位置播放视频(效果如下);2、点击播放按钮,全屏播放视频。 实现过程1、两种播放方...【详细内容】
2022-07-29  Search: 播放视频  点击:(317)  评论:(0)  加入收藏
如何用 OBS 和 WebSockets 播放视频流
用这些简化了 WebSockets 的开源支持工具来控制你的流媒体。 来源:https://linux.cn/article-12347-1.html 作者:Kevin Sonney 译者:Xingyu.Wang(本文字数:4340,阅读时长大约:6 分...【详细内容】
2020-06-25  Search: 播放视频  点击:(442)  评论:(0)  加入收藏
▌简易百科推荐
Meta如何将缓存一致性提高到99.99999999%
介绍缓存是一种强大的技术,广泛应用于计算机系统的各个方面,从硬件缓存到操作系统、网络浏览器,尤其是后端开发。对于Meta这样的公司来说,缓存尤为重要,因为它有助于减少延迟、扩...【详细内容】
2024-04-15    dbaplus社群  Tags:Meta   点击:(3)  评论:(0)  加入收藏
SELECT COUNT(*) 会造成全表扫描?回去等通知吧
前言SELECT COUNT(*)会不会导致全表扫描引起慢查询呢?SELECT COUNT(*) FROM SomeTable网上有一种说法,针对无 where_clause 的 COUNT(*),MySQL 是有优化的,优化器会选择成本最小...【详细内容】
2024-04-11  dbaplus社群    Tags:SELECT   点击:(3)  评论:(0)  加入收藏
10年架构师感悟:从问题出发,而非技术
这些感悟并非来自于具体的技术实现,而是关于我在架构设计和实施过程中所体会到的一些软性经验和领悟。我希望通过这些分享,能够激发大家对于架构设计和技术实践的思考,帮助大家...【详细内容】
2024-04-11  dbaplus社群    Tags:架构师   点击:(2)  评论:(0)  加入收藏
Netflix 是如何管理 2.38 亿会员的
作者 | Surabhi Diwan译者 | 明知山策划 | TinaNetflix 高级软件工程师 Surabhi Diwan 在 2023 年旧金山 QCon 大会上发表了题为管理 Netflix 的 2.38 亿会员 的演讲。她在...【详细内容】
2024-04-08    InfoQ  Tags:Netflix   点击:(5)  评论:(0)  加入收藏
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(9)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(16)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(14)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(9)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(15)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(10)  评论:(0)  加入收藏
站内最新
站内热门
站内头条