用vue封装视频预览组件(手机端)

Posted yeqrblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用vue封装视频预览组件(手机端)相关的知识,希望对你有一定的参考价值。

最近写手机打开的h5页面时,有视频预览的需求,于是封装了一个小组件。

组件目录如下:

技术图片

1.首先,showVideo.vue

<template>
    <div class="video-box" v-if="videoFlag">
        <span class="close-btn" @click="close"></span>
        <video :src="urlString" autoplay="true" controls="controls">
            您的浏览器不支持 video 标签。
        </video>
    </div>
</template>
<script type="text/ecmascript-6">
    export default {
    }
</script>
<style lang="stylus" scoped>
    .video-box
        position absolute
        top 0
        right 0
        bottom 0
        left 0
        z-index 10
        .close-btn
            position absolute
            top .45rem
            left 0
            z-index 11
            display inline-block
            width 2.4rem
            height 2.4rem
            background url(‘../../assets/images/close_icon.png‘) center center no-repeat
            background-size contain
        video
            max-width 100%
            max-height 100%
</style>

注:close_icon.png是关闭的图片,按需替换即可。

2.接着是index.js

import Vue from ‘vue‘
import vid from ‘./showVideo‘

const videoExtend = Vue.extend(vid)

const video = (url) => {
    const videoInstance = new videoExtend({
        data: {
            urlString: url, // 视频链接地址
            videoFlag: false
        },
        created() {
            if (url) this.videoFlag = true
        },
        methods: {
            close() {
                this.videoFlag = false
            }
        }
    })
    videoInstance.vm = videoInstance.$mount()
    videoInstance.dom = videoInstance.vm.$el
    document.body.appendChild(videoInstance.dom) // 将dom插入body
}
export default {
    install: Vue => {
        Vue.prototype.$videoPreview = video
    }
}

3.在main.js入口文件中导入

import videoPreview from ‘@/components/videoPreview/index.js‘
Vue.use(videoPreview)

4.使用

methods: {
    // 视频预览
    openVideo(url) {
        this.$videoPreview(url)
    }
}

 5.效果(全屏展示)

技术图片

 

以上是关于用vue封装视频预览组件(手机端)的主要内容,如果未能解决你的问题,请参考以下文章

vue实现一个鼠标滑动预览视频封面组件

vue-移动端日历插件

Vue全家桶构建网易云音乐web app

移动端Vue界面缓存处理

回归 | js实用代码片段的封装与总结(持续更新中...)

VSCode自定义代码片段14——Vue的axios网络请求封装