位置: IT常识 - 正文

使用Swiper插件实现视频轮播,怎么实现切换自动播放视频?(swiper插件使用步骤)

编辑:rootadmin
使用Swiper插件实现视频轮播,怎么实现切换自动播放视频? 一、需求分析

推荐整理分享使用Swiper插件实现视频轮播,怎么实现切换自动播放视频?(swiper插件使用步骤),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:swipeback插件,swiper.slideto,swiper-slide,swiper.slideto,使用swiper插件实现轮播图,swiper插件使用步骤,使用swiper插件实现轮播图,swiper组件的典型应用,内容如对您有帮助,希望把文章链接给更多的朋友!

这两天讨论了一个项目需求,刚开始是希望:轮播图中嵌入视频,轮播到视频自动播放,播放完毕切换下一张轮播,手动切换时暂停播放视频。后面因为自动播放没有声音,便暂时放弃了这个想法(有知道或了解的jy欢迎交流)。

后面改成像下图这样,单独用一个页面轮播视频,需求:

点击下面封面图切换视频切换过去自动播放,上一个视频暂停(这个也还有bug)左上角浮动标签可以返回上一页和切换网页全屏

二、需求拆解轮播视频-swiper

视频轮播我采用了swiper插件,官网提供的组件里面正好有一个类似的样例

只需要将上面部分的图片数据改成自己的视频数据就可以了,想了下数据大概长这样子:

[  {        id: "1",        imgUrl: "src/assets/images/banner/g1.png", //封面图地址        videoUrl: "https://cdn.uviewui.com/uview/resources/video.mp4", //视频地址        text: "哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈", //视频描述        play: false, //是否正在播放  },] <div     style="--swiper-navigation-color: #fff; --swiper-pagination-color: #fff"     class="swiper mySwiper2"     >    <div class="swiper-wrapper">        <div             class="swiper-slide"             v-for="item in state.videoData"             :style="'background:url(' + item.imgUrl + ') no-repeat center/cover'"             >            <video                   :src="item.videoUrl"                   controls                   ></video>        </div>    </div></div><div thumbsSlider="" class="swiper mySwiper">    <div class="swiper-wrapper">        <div             v-for="item in state.videoData"             class="swiper-slide"             >            <p>{{ item.text }}</p>            <img :src="item.imgUrl" />        </div>    </div></div>

页面结构差不多就是这样子,js代码就不贴出来了,倒时候重新写个demo放在GitHub上。

使用Swiper插件实现视频轮播,怎么实现切换自动播放视频?(swiper插件使用步骤)

这个时候已经基本实现了点击封面图切换视频的效果了,下面做,当视频播放时切换自动暂停

视频播放时切换自动暂停

这个需求的话也比较简单,进入页面默认当前视频是数据的第一个,监听下面封面图的点击事件。

<div     v-for="item in state.videoData"     class="swiper-slide"     @click="switchVideo(item.id)"     > function switchVideo(id) {    //curVideo.value 当前视频的id    let index = state.videoData.findIndex((item) => item.id == curVideo.value);    if (state.videoData[index].play) {        //当前视频暂停        document.querySelector(`.myVideo${curVideo.value}`).pause();        state.videoData[index].play = false;  }    curVideo.value = id;}

将点击的视频id传入,判断当前视频是否正在播放,如果正在播放,通过pause()方法暂停视频,将传入的id赋值给当前视频。

现在可以切换视频时暂停视频播放了,但是还需要在视频播放、暂停和结束的时候修改数据play的状态

监听视频播放、暂停和结束<div     style="--swiper-navigation-color: #fff; --swiper-pagination-color: #fff"     class="swiper mySwiper2"     >    <div class="swiper-wrapper">        <div             class="swiper-slide"             v-for="item in state.videoData"             :style="'background:url(' + item.imgUrl + ') no-repeat center/cover'"             >            <video                   :class="'myVideo' + item.id"                   :src="item.videoUrl"                   controls                   @play="onPlay(item.id)"                   @pause="onPause(item.id)"                   ></video>        </div>    </div></div><div thumbsSlider="" class="swiper mySwiper">    <div class="swiper-wrapper">        <div             v-for="item in state.videoData"             class="swiper-slide"             @click="switchVideo(item.id)"             >            <p>{{ item.text }}</p>            <img :src="item.imgUrl" />        </div>    </div>    <tool-aside></tool-aside></div> //监听视频播放function onPlay(id) {    state.videoData.forEach((item) => {        if (item.id == id) {            item.play = true;      }  });}//监听视频暂停function onPause(id) {    state.videoData.forEach((item) => {        if (item.id == id) {            item.play = false;      }  });}//监听视频播放结束function onEnded(id) {    state.videoData.forEach((item) => {        if (item.id == id) {            item.play = false;      }  });} 左上角选项卡

这个也很简单,因为项目使用了 Element-plus ,所以直接使用了里面的组件

<div class="main">    <div class="aside">        <el-card class="box-card">            <div class="text item">                <el-tag @click="goBack()">返回</el-tag>            </div>            <div class="text item">                <el-tag @click="toggleScreen(state.flag)">切换全屏</el-tag>            </div>        </el-card>    </div></div>

再点击返回按钮时,触发 goBack 方法,通过路由跳转到首页

点击切换全屏时调用 toggleScreen 方法,通过 requestFullscreen 和 exitFullscreen 方法切换全屏

const toggleScreen = () => {    // 如果未开启就开启 如果已开启就关闭    if (state.isScreenFull) {        document.exitFullscreen(); // 关闭全屏  } else {        document.documentElement.requestFullscreen(); //开启全屏  }    state.isScreenFull = !state.isScreenFull;}; 总结

到目前为止需求已经完成的七七八八了,除了切换自动播放下一个视频

//切换时暂停视频播放function switchVideo(id) {    let index = state.videoData.findIndex((item) => item.id == curVideo.value);    if (state.videoData[index].play) {        ……        //切换到的视频播放        document.querySelector(`.myVideo${id}`).play();        state.videoData[index].play = true;  }    curVideo.value = id;}

我在上面函数中加入了注释下的两行代码,在切换视频时,当前视频如果正在播放,就会暂停自动播放下一个视频,如果当前视频没有播放,那么切换到下一个视频也不会播放。这是浏览器自带的机制吗??有没有做过的小伙伴可以交流一下,类似腾讯视频:点击一部电影,跳转后会自动播放,切换后也会自动播放。

最后

最近找到一个VUE的文档,它将VUE的各个知识点进行了总结,整理成了《Vue 开发必须知道的36个技巧》。内容比较详实,对各个知识点的讲解也十分到位。

有需要的小伙伴,可以点击下方卡片领取,无偿分享

本文链接地址:https://www.jiuchutong.com/zhishi/294537.html 转载请保留说明!

上一篇:带你看看 TypeScript 5.0 的新特性(带你看看房间英语怎么写)

下一篇:【今日清明节】 (© Xinhua/Alamy Stock Photo)(今日清明是清明开始还是结束)

  • 优酷扫码登录在哪(优酷扫码登录在哪里?)

    优酷扫码登录在哪(优酷扫码登录在哪里?)

  • iphone有测身高功能吗(苹果手机测身高的软件叫什么)

    iphone有测身高功能吗(苹果手机测身高的软件叫什么)

  • 怎么把一个通知改成一条微信(怎么把一个通知改成具体信息)

    怎么把一个通知改成一条微信(怎么把一个通知改成具体信息)

  • ios14双击背部截屏(ios14双击背部截屏带了套还能吗)

    ios14双击背部截屏(ios14双击背部截屏带了套还能吗)

  • OPPO Ace2手机的重量是多少(oppo ace 多重)

    OPPO Ace2手机的重量是多少(oppo ace 多重)

  • qq字体怎么设置的和系统不一样(qq字体怎么设置的和手机系统一样)

    qq字体怎么设置的和系统不一样(qq字体怎么设置的和手机系统一样)

  • 如何隐藏微信群让别人看不到(如何隐藏微信群名称)

    如何隐藏微信群让别人看不到(如何隐藏微信群名称)

  • 哔哩哔哩如何设置息屏继续播放(哔哩哔哩如何设置自动连播)

    哔哩哔哩如何设置息屏继续播放(哔哩哔哩如何设置自动连播)

  • 支付宝饿了么头像怎么改不了(支付宝饿了么头像在哪换)

    支付宝饿了么头像怎么改不了(支付宝饿了么头像在哪换)

  • 苹果怎么发空白消息(苹果怎么发空白朋友圈)

    苹果怎么发空白消息(苹果怎么发空白朋友圈)

  • 为什么我8g运行内存可以用只有3.9g(为什么8g运行内存只有6g可用)

    为什么我8g运行内存可以用只有3.9g(为什么8g运行内存只有6g可用)

  • 荣耀20扫描文件功能在哪(华为荣耀20扫描文件)

    荣耀20扫描文件功能在哪(华为荣耀20扫描文件)

  • 智慧团建认证不通过有什么影响(智慧团建认证不通过要怎么办)

    智慧团建认证不通过有什么影响(智慧团建认证不通过要怎么办)

  • 显示屏75hz和144hz有什么区别(显示屏75hz和165hz有什么区别)

    显示屏75hz和144hz有什么区别(显示屏75hz和165hz有什么区别)

  • 网易云音乐的积分有什么用(网易云音乐的积极作用)

    网易云音乐的积分有什么用(网易云音乐的积极作用)

  • word怎么计算平均值(word怎么计算平均得分)

    word怎么计算平均值(word怎么计算平均得分)

  • 手机怎样查看qq特别关心(手机怎样查看qq撤回的图片)

    手机怎样查看qq特别关心(手机怎样查看qq撤回的图片)

  • iphone11pro怎么打开飞行模式(苹果11怎么打)

    iphone11pro怎么打开飞行模式(苹果11怎么打)

  • 如何检查手机电池健康度(如何检查手机电池健康程度vivo)

    如何检查手机电池健康度(如何检查手机电池健康程度vivo)

  • 华为mate30搭载什么系统(华为mate30顶配)

    华为mate30搭载什么系统(华为mate30顶配)

  • netflix中国能用吗

    netflix中国能用吗

  • iphone11搭载什么系统(苹果11配些什么)

    iphone11搭载什么系统(苹果11配些什么)

  • 微信设置拒绝好友拉群(微信设置拒绝好友转账)

    微信设置拒绝好友拉群(微信设置拒绝好友转账)

  • 手机自带录屏在哪(手机自带录屏在哪里设置华为)

    手机自带录屏在哪(手机自带录屏在哪里设置华为)

  • 学习 Python 之 Pygame 开发魂斗罗(十三)(python怎样学)

    学习 Python 之 Pygame 开发魂斗罗(十三)(python怎样学)

  • 公司更换营业执照需要多久
  • 固定资产的折余价值计算公式
  • 小企业如何做帐
  • 金税盘锁死日期16号几点
  • 新个税系统如何操作
  • 车船抵扣如何填报
  • 零申报失败什么原因
  • 扣缴附加税怎么做分录
  • 子母公司有连带责任吗
  • 个人到税务局开增值税专用发票
  • 外商投资企业是民营企业吗
  • 报关单和进口增值税专用缴款书联系
  • 购进用于研发的国产设备进项税可以抵扣吗
  • 租赁违法处理
  • 投资性房地产房产税应按从价还是从租
  • 飞机票改签费用怎么算1000块
  • 补计提个税的会计分录
  • 扣员工餐费需要缴纳个税吗
  • 转让名额协议
  • 工厂报废的产品价格有规定吗
  • 无票收入应附什么单据
  • 税控盘年费去哪里交
  • 预提费用 增值税
  • 出口发票开具注意事项及要求有哪些?
  • 农民工预储金怎么开户
  • 我的初级备考经验,认真就有收获
  • 个税专项附加扣除是什么意思
  • 软件行业的收入怎么样
  • 企业季度所得税可以弥补以前年度亏损吗
  • xp系统咋样
  • 服务佣金是什么意思
  • php可以连接access吗
  • 报销各种费用怎么做分录
  • PHP:Memcached::getStats()的用法_Memcached类
  • windows 11 正式版实际使用体验如何?
  • 房地产开发企业分为几个等级
  • 企业将设备出租应当作为固定资产吗
  • html中a标签怎么引用图片
  • 阿里什么
  • 怎样才能帮你
  • 增值税普票遗失可否用复印件入账
  • java中的变量
  • php如何判断是移动还是pc
  • 长期股权投资成本法会计处理
  • 工资薪金的税务筹划
  • mysql存储过程传入参数
  • 缓交社保个税怎么报?
  • 入库的残料价值包括哪些
  • 缴纳以前年度房租的税
  • 固定资产盘盈为什么计入盈余公积
  • 在创业板上市公司首次公开发行股票的条件
  • 固定资产备抵科目有哪些
  • 事业单位会计的特点
  • 销售货物收到托运怎么办
  • 购入固定资产计累计盈余
  • 银行收到客户货款会计分录
  • 省外出差
  • 签合同付款
  • mysql数据库定时备份脚本
  • 联想昭阳k41笔记本
  • 修改双系统的引导顺序
  • xp开始界面
  • linux ./执行
  • win10相机模糊
  • windows8使用教程
  • 如何检测装有监控器?
  • win10预览版和正式版区别
  • Unity Socket TCP
  • log4j 日志文件太大
  • js表单验证代码Email
  • Android AsyncTaskLoader需要注意的问题
  • jquery按钮点击事件
  • shell获取字符串中的数字
  • angular.js
  • 批处理是什么
  • 推荐一些非常不好的书
  • python django orm
  • 增值税纳税申报表怎么填
  • 辽宁省电子税务局操作手册
  • 养老专业在职研究生好吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设