vue - video视频播放完后重置播放,离开页面暂停所有视频,轮播切换后暂停播放所有视频
描述:基于vue-awesome-swiper的多视频处理
slideChangeTransitionEnd:轮播切换时暂停播放
父组件
<swiper ref="mySwiper" :options="swiperOption" v-if="bannerList.length" @slideChangeTransitionEnd="stopOther">
<swiper-slide v-for="(si, sidx) in bannerList" :key="'plant_banner' + sidx">
<VVideo :src="si.pic" :poster="si.pic_cover" :class="`bannerVideo${sidx}`" :ref="`bannerVideo${sidx}`" :videoPlayer="'bannerVideo'+sidx" @stopOther="stopOther"></VVideo>
</swiper-slide>
<div class="swiper-pagination" slot="pagination"></div>
</swiper>
beforeRouteLeave(to, from, next) {
this.stopOther();
next();
},
methods: {
// 暂停其他视频
stopOther(v) {
const refs = this.$refs;
let refsList = Object.keys(refs);
refsList.forEach((item) => {
console.log(item);
const videoDom = document.querySelector(`.${item}>video`);
if (!videoDom || item == v) return;
this.$refs[item][0].playState = false;
this.$refs[item][0].controls = false;
videoDom.pause && videoDom.pause();
});
},
}
子组件
<template>
<div class="v-video"
<video :ref="videoPlayer" class="video" :class="videoPlayer" :src="src" webkit-playsinline="true" playsinline="true" controlsList="nodownload" @click="togglePlay()">
<source :src="src" type="video/mp4" />
您的浏览器不支持 video 视屏播放。
</video>
<img class="video__poster" v-if="!playState" :src="poster" alt="" @click="togglePlay()">
<img v-if="!playState" class="video__btn" src="../common/images/play_pause.png" alt="" @click="togglePlay()" />
</div>
</template>
<script>
export default {
props: {
src: {
//视频链接
type: String,
default: "",
},
poster: {
//海报链接
type: String,
default: "",
},
videoPlayer: {
type: String,
default: "",
},
},
data() {
return {
playState: false, //是否显示暂停按钮
};
},
mounted() {},
computed: {},
methods: {
togglePlay() {
console.log("this.videoPlayer", this.videoPlayer);
this.$emit("stopOther", this.videoPlayer);
this.$nextTick(() => {
let videoDom = this.videoPlayer && this.$refs[this.videoPlayer];
if (!videoDom) return;
if (!this.playState) {
videoDom && videoDom.play();this.playState = true;
} else {
videoDom && videoDom.pause();this.playState = false;
}
videoDom.onended = () => {
this.playState = false;
}
});
},
},
};
</script>
<style lang="stylus" scoped>
.v-video {
width: 100%;
height: 100%;
position: relative; >video {
width: 100%;
height: 100%;
} .video__poster {
width: 100%;
height: 100%;
object-fit: cover;
position: absolute;
left: 0;
top: 0;
z-index: 5;
} .video__btn {
width: 2.6rem;
height: 2.6rem;
position: absolute;
top: 50%;
left: 50%;
margin-left: - 1.3rem;
margin-top: -1.3rem;
z-index: 10;
}
}
</style>
vue - video视频播放完后重置播放,离开页面暂停所有视频,轮播切换后暂停播放所有视频的更多相关文章
- 一款基于jQuery轮播切换焦点图,可播放多张图片
今天给大家分享一款基于jQuery轮播切换焦点图,可播放多张图片,在这个组件中,你可以任意指定8张图片,然后插件就会帮你自动生成缩略图,并且自动开始切换播放图片.当然,你也可以手动切换图片,只要点击缩 ...
- Vue实现音乐播放器(七):轮播图组件(二)
轮播图组件 <template> <div class="slider" ref="slider"> <div class=&qu ...
- vue项目一个页面使用多个轮播图详解
1.html代码: <div v-for="(item,index) in arrDataList.Floor"> // 根据后台数据循环渲染多个轮播图组件 <d ...
- Swiper轮播手动后不动
最近项目首页轮播图用了Swiper轮播,今天突然发现轮播图动画初始正常但是手动换过之后就不动了,解决方法有两种,具体根据采用的情况为准: 1.autoplayDisableOnInteraction: ...
- swiper在vue项目中的循环轮播bug以及点击事件
一般的,如果是静态数据(本地数据),可以直接在mounted生命周期中初始化,循环轮播.自动播放都比较正常. 但是,如果是动态从后台获取数据的话,采用上述方法会发现,轮播图无法自动播放,也无法拖拽. ...
- js原生选项卡(自动播放无缝滚动轮播图)二
今天分享一下自动播放轮播图,自动播放轮播图是在昨天分享的轮播图的基础上添加了定时器,用定时器控制图片的自动切换,函数中首先封装一个方向的自动播放工能的小函数,这个函数中添加定时器,定时器中可以放向右走 ...
- EasyPlayer RTSP Android安卓播放器实现视频源快速切换
EasyPlayer现在支持多视频源快速切换了,我们介绍一下是如何实现的. 这个需求通常应用在一个客户端需要查看多个视频源的情况,比如多个监控场景轮播. 由于EasyPlayer的播放端已经放在Fra ...
- vue video全屏播放
需求: 1.视频为长方形,页面初始化打开为横屏全屏播放视频. 2.微信不支持自动播放,故自动播放需求删除. 方法: 1.vue-video-player插件 因需求较简单,仅要求播放本地一个视频,故未 ...
- 移动端HTML5<video>视频播放优化实践
遇到的挑战 移动端HTML5使用原生<video>标签播放视频,要做到两个基本原则,速度快和体验佳,先来分析一下这两个问题. 下载速度 以一个8s短视频为例,wifi环境下提供的高清视频达 ...
- 移动端HTML5<video>视频播放优化实践[转]
http://blog.csdn.net/u010918416/article/details/52705732 http://www.xuanfengge.com/html5-video-play. ...
随机推荐
- 精华推荐 |【深入浅出Sentinel原理及实战】「原理探索专题」完整剖析Alibaba微服务架构体系之轻量级高可用流量控制组件Sentinel(1)
Sentinel是什么?不要概念混淆啊! 注意:本Sentinel与Redis服务Sentinel是两回事,压根不是一个概念,请大家不要混肴. Alibaba的Sentinel Sentinel是由阿 ...
- Spring学习笔记 - 第三章 - AOP与Spring事务
原文地址:Spring学习笔记 - 第三章 - AOP与Spring事务 Spring 学习笔记全系列传送门: Spring学习笔记 - 第一章 - IoC(控制反转).IoC容器.Bean的实例化与 ...
- [whk] 解三元一次方程
注:本篇运用大量 Katex ,如果炸了可能是运存不够也可能还要加载一会,重进几次即可.(都2202了,居然还存在我这种会炸公式的笔记本) 前言 写这篇随笔的由来是今天学习了: 不共线三点确定二次函数 ...
- [python]《Python编程快速上手:让繁琐工作自动化》学习笔记4
1. 处理Excel 电子表格笔记(第12章)(代码下载) 本文主要介绍openpyxl 的2.5.12版处理excel电子表格,原书是2.1.4 版,OpenPyXL 团队会经常发布新版本.不过不用 ...
- 在 C# 9 中使用 foreach 扩展
在 C# 9 中,foreach 循环可以使用扩展方法.在本文中,我们将通过例子回顾 C# 9 中如何扩展 foreach 循环. 代码演示 下面是一个对树形结构进行深度优先遍历的示例代码: usin ...
- [C++Primer] 第二章 变量和基本类型
第二章 变量和基本类型 引用 引用定义的时候必须初始化. 引用初始化之后无法重新绑定到其它对象上. 引用本身并不是对象,所以没有指向引用的引用(不管如何多层引用,引用的还是源对象) 下面用一个简单的例 ...
- P5380 [THUPC2019]鸭棋
题面 查看题面 题目背景 鸭棋是一种风靡鸭子界的棋类游戏.事实上,它与中国象棋有一些相似之处,但规则不尽相同.在这里,我们将为你介绍鸭棋的规则. 鸭棋在一个 \(10\times 9\)(\(10\) ...
- echarts系列-带图教你调整左右位置x轴样式网格虚线刻度居中双轴Y轴滚动上下移动文字旋转改分割线颜色部分字体改色折注混合,X轴的颜色,X轴字体颜色,调整柱子颜色,调整小图标图例的大小和位置,鼠标hover时候的样式,用纵向阴影
上面先说注意事项 1.如果使用show hidden控制图表显示隐藏,某些切换效果很奇怪,比如饼图,会从左上角开始放大,很丑,这个时候我们可以设置其宽高来解决问题,给其设置宽高后,切换的奇怪效果即可消 ...
- react系列-从0开始搭建一个react项目
从0开始搭建一个react项目 1.安装脚手架 npm install -g create-react-app 2.创建项目 D: //进入D盘 mkdir ReactDemo //创建ReactDe ...
- vue3 | shallowReactive 、shallowRef、triggerRef
shallowReactive 使用 reactive 声明的变量为递归监听,使用 shallowReactive 声明的变量为非递归监听(通俗的讲就是 reactive 创建的对象将会被 vue 内 ...