video标签 视频暂停播放的问题,vue中同一个video标签中多个视频的播放问题

获取后来返回来的视频地址放在了elment的走马灯里面 进行自动切换
要求:
实现双击在弹窗中播放,弹窗大小【1000*550】(第一点)
原视频和弹窗内视频互斥,不可同时播放(第二点)
上传多个视频,左右切换时,不可同时播放(第三点)
鼠标移入走马灯不自动轮播,点击播放时不自动轮播,鼠标移出,走马灯开始自动轮播(第四点)

   <el-carousel
       v-else-if="samplingSceneVideofileList.length"
       height="300px"
       :autoplay="carout"
       class="videoCarousel"
       >
       <el-carousel-item
           v-for="(item, index) in samplingSceneVideofileList"
           :key="item.url"
           >
           <video
           :src="item.url"
           ref="videoView"
           style="width: 100%; height: 100%"
           :controls="isShowcontrols"
           controlsList="nofullscreen nodownload noplaybackrate noremote footbar"
           :disablePictureInPicture="true"
           @dblclick="playVideo"
           @play="handlePlay(index)"
           @pause="handlePause"
           @mouseenter="mouseenterPause"
           @mouseleave="mouseenterPlay"
           >
           您的浏览器不支持 video 标签。
           </video>
        </el-carousel-item>
    </el-carousel>
    <!-- video视频弹出框播放 -->
    <el-dialog
      :visible.sync="videoState"
      width="1000px"
      heigth="610px"
      :close-on-click-modal="false"
      class="videoDialog"
      :before-close="dialogClose"
      :append-to-body="true"
    >
      <video :src="videoSrc" controls="controls" autoplay>
        您的浏览器不支持 video 标签。
      </video>
    </el-dialog>
data() {
    return {
      videoSrc: "",
      videoState: false, //弹出框
      isShowcontrols: false, 
      carout: true,//走马灯是否自动轮播
      isPlay: false, //全局变量 判断是否有视频再播放
    };
  },
  methods:{
  //视频播放
  handlePlay(index) {
      const videoElement = this.$refs.videoView.length; 
      if (videoElement > 0) {
        for (let i = 0; i < videoElement; i++) {
          if (i == index) { //第三点 一个播放 其余的暂停  只允许一个播放 
            this.$refs.videoView[i].play();
          } else {
            this.$refs.videoView[i].pause();
          }
          this.isPlay = true;
        }
      }
    },
    //视频暂停
    handlePause() {
      this.isPlay = false;
    },
    //双击视频 第一点
    playVideo(index) {
      // 打开弹出框
      this.videoState = true;
      // 视频地址
      this.videoSrc = index.target.currentSrc;
      const videoData = this.$refs.videoView.length;
      if (videoData > 0) { //第二点  弹出框打开后 播放视频 原视频必须暂停
        for (let i = 0; i < videoData; i++) {
          if (!this.$refs.videoView[i].paused) {
            this.$refs.videoView[i].pause();
          } else {
            this.$refs.videoView[i].pause();
          }
        }
      }
    },
    // 鼠标移入
    mouseenterPause() {
      this.carout = false; //走马灯自动轮播暂停
      this.isShowcontrols = true; //播放器的工具
    },
    // 鼠标移出
    mouseenterPlay() {
      this.isShowcontrols = false; //播放器的工具
      if (this.videoState || this.isPlay) { //判断弹出框 和 视频是否在播放
        return; //返回false
      } else {
        this.carout = true;//走马灯自动轮播开启
      }
    },
    //弹出框关闭按钮
    dialogClose() {
      this.videoState = false;
      this.carout = true;//走马灯自动轮播开启
    },
  }

图片示意图
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue Slick Carousel是一个基于Vue.js的轮播组件,它提供了丰富的轮播功能和可定制的选项。下面是一个使用Vue Slick Carousel的示例: 首先,你需要安装Vue Slick Carousel。可以通过npm或yarn来安装: ```shell npm install vue-slick-carousel ``` 然后,在你的Vue组件引入Vue Slick Carousel并注册为全局组件: ```javascript import Vue from 'vue' import VueSlickCarousel from 'vue-slick-carousel' import 'vue-slick-carousel/dist/vue-slick-carousel.css' Vue.component('VueSlickCarousel', VueSlickCarousel) ``` 接下来,在你的模板使用Vue Slick Carousel组件,并传入相应的轮播内容和选项: ```html <template> <div> <vue-slick-carousel :options="carouselOptions"> <div v-for="item in carouselItems" :key="item.id"> <img :src="item.image" alt="carousel item"> </div> </vue-slick-carousel> </div> </template> <script> export default { data() { return { carouselItems: [ { id: 1, image: 'image1.jpg' }, { id: 2, image: 'image2.jpg' }, { id: 3, image: 'image3.jpg' } ], carouselOptions: { slidesToShow: 1, slidesToScroll: 1, autoplay: true, autoplaySpeed: 2000 } } } } </script> ``` 在上面的示例,我们使用了一个包含三个图片的轮播内容,并设置了一些轮播选项,如每次显示一个轮播项、自动播放和自动播放速度为2秒。 Vue Slick Carousel还提供了许多其他选项和事件,可以根据需要进行定制。你可以在官方文档找到更多详细信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值