swiper大屏文件预览图片和视频,视频切换时暂停视频.

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


需求

要求做附件预览,可以预览图片文件和视频文件。

一.遇到问题?

视频文件一旦播放切换swiper轮播图到下一张,上一个的视频还是会保持播放状态,并且有视频播放的声音,严重影响使用

二.渲染图片和视频

1.首先判断附件是否是视频文件和图片文件,如果不是就显示附件不支持预览

代码如下(示例):

// 图片得样式
let imgTypes = 'jpg,jpeg,png,gif,svg';
// 视频的样式
let videoTypes = 'mp4,wav,avi,ram,rmvb,mpg,flv,mov';
this.imgList = this.list.map(item => {
    // 拿到当前文件后缀名,如果不是图片提示不支持预览
    let suffix = item.split('?')[0].split('.')[item.split('?')[0].split('.').length - 1];
    // 判断是否是视频文件
    if (videoTypes.indexOf(suffix) > -1) {
        item += '`yes-video';
        return item;
    }
    // 判断是否是图片文件
    if (imgTypes.indexOf(suffix) == -1) {
        item += '`no-img';
    }
    return item;
});

2.html代码部分

在这里插入图片描述

三.解决切换视频时候暂停的问题

1.动态绑定ref

在这里插入图片描述

2.通过监听swipier的切换回调函数配合动态ref 来获取dom,并且判断dom是否是视频 如果是视频调用video的原生api 暂停视频

  				// 分页器配置
                pagination: {
                    el: '.swiper-pagination',
                    clickable: true,
                    type: 'bullets',
                    currentClass: 'pagination-active', //分式类型分页器的当前索引的类名
                },
                navigation: {
                    nextEl: '.swiper-button-next',
                    prevEl: '.swiper-button-prev',
                },
                on: {
                    // 切换的时候如果是视频那么需要暂停视频
                    slideChangeTransitionStart: swiper => {
                    //   通过ref拿到切换前一个的demo
                        let dom = this.$refs['card' + this.lastIndex][0];
                        // 判断dom是否是video,如果是调用video暂停api
                        dom && dom.pause && dom.pause();
                        this.lastIndex = swiper.activeIndex;
                    },
                },
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值