最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue中使用h5 video標(biāo)簽實(shí)現(xiàn)彈窗播放本地視頻的方法

 更新時(shí)間:2022年04月29日 15:41:28   作者:xuejiachen  
本文主要介紹了vue中使用h5 video標(biāo)簽實(shí)現(xiàn)彈窗播放本地視頻的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

參考h5 < video >標(biāo)簽的用法

在開發(fā)過程中主要涉及到以下幾個(gè)需要關(guān)注的點(diǎn)

1.彈窗的打開關(guān)閉

父組件中使用.sync綁定visible屬性,可直接在子組件中關(guān)閉彈窗更新父組件傳入的visible值;

// 父組件中引用子組件
<video-modal :visible.sync="showVideoModal">

// 子組件中
<el-dialog :visible="visible" @close="closeModal">
// 子組件中關(guān)閉彈窗方法
closeModal() {
    this.$emit("updata:visible", false);
}

不過這樣使用會(huì)導(dǎo)致每次重新打開視頻彈窗進(jìn)度條都會(huì)留在上一次打開的位置,所以需要在引用子組件外再嵌套一個(gè)div,利用v-if使其每次打開都重新渲染,從而解決進(jìn)度條緩存的問題;

<div v-if="showVideoModal">
    <video-modal :visible.sync="showVideoModal">
</div>

2. 本地視頻資源路徑的引入

需要播放的視頻是項(xiàng)目中的靜態(tài)資源,由于彈窗組件需要支持可復(fù)用,所以視頻路徑不可寫死,下面示例為視頻名稱自定義;

<video
    ref="video"
    class="play-video"
    controls="controls"
    autoplay="autoplay"
>
    <source :src="require('@/assets/videos/' + videoName + '.mp4')" type="video/mp4" />
</video>

如果視頻不在src目錄下,而是public目錄下則寫法略有不同;

computed: {
    src() {
        // 需要在js部分用計(jì)算屬性定義
        return process.env.BASE_URL + "videos/" + this.videoName + ".mp4";
    }
},

3. 視頻播放完畢自動(dòng)關(guān)閉彈窗

監(jiān)聽video標(biāo)簽的ended事件并關(guān)閉彈窗即可,vue生命周期中定義需要增加this.$nextTick,否則無法獲取對(duì)應(yīng)的dom元素;

mounted() {
    this.$nextTick(() => {
        // 播放完畢自動(dòng)關(guān)閉彈窗
        const eleVideo = document.querySelector(".play-video");
        eleVideo.addEventListener("ended", () => {
            this.closeVideoModal();
        }, false);
    });
},

4. 視頻在彈窗中自適應(yīng)大小

給video標(biāo)簽設(shè)置合適的寬高,在利用object-fit: contain;屬性即可。

最后附上完整代碼

<template>
    <el-dialog class="video-dialog" :visible="visible" :title="title" width="75%" append-to-body @close="closeVideoModal">
        <video
            ref="video"
            class="play-video"
            controls="controls"
            autoplay="autoplay"
        >
            <source :src="src" type="video/mp4" />
        </video>
    </el-dialog>
</template>

<script>
export default {
    name: "VideoModal",
    props: {
        visible: {
            type: Boolean,
            default: false
        },
        // 父組件傳參彈窗標(biāo)題
        title: {
            type: String,
            default: ""
        },
        // 父組件傳參要播放的視頻名稱
        videoName: {
            type: String,
            default: ""
        }
    },
    computed: {
        src() {
            return process.env.BASE_URL + "videos/" + this.videoName + ".mp4";
        }
    },
    mounted() {
        this.$nextTick(() => {
            // 播放完畢自動(dòng)關(guān)閉彈窗
            const eleVideo = document.querySelector(".play-video");
            eleVideo.addEventListener("ended", () => {
                this.closeVideoModal();
            }, false);
        });
    },
    methods: {
        closeVideoModal() {
            this.$emit("update:visible", false);
        }
    }
};
</script>

<style lang="scss" scoped>
.play-video {
    object-fit: contain;
    width: 100%;
    height: 99.5%;
}
</style>

到此這篇關(guān)于vue中使用h5 video標(biāo)簽實(shí)現(xiàn)彈窗播放本地視頻的方法的文章就介紹到這了,更多相關(guān)vue 彈窗播放本地視頻內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue?echarts實(shí)例項(xiàng)目地區(qū)銷量趨勢(shì)堆疊折線圖實(shí)現(xiàn)詳解

    Vue?echarts實(shí)例項(xiàng)目地區(qū)銷量趨勢(shì)堆疊折線圖實(shí)現(xiàn)詳解

    Echarts,它是一個(gè)與框架無關(guān)的 JS 圖表庫,但是它基于Js,這樣很多框架都能使用它,例如Vue,估計(jì)IONIC也能用,因?yàn)槲业牧?xí)慣,每次新嘗試做一個(gè)功能的時(shí)候,總要新創(chuàng)建個(gè)小項(xiàng)目,做做Demo
    2022-09-09
  • 使用vue.js在頁面內(nèi)組件監(jiān)聽scroll事件的方法

    使用vue.js在頁面內(nèi)組件監(jiān)聽scroll事件的方法

    今天小編就為大家分享一篇使用vue.js在頁面內(nèi)組件監(jiān)聽scroll事件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • element ui的el-input-number修改數(shù)值失效的問題及解決

    element ui的el-input-number修改數(shù)值失效的問題及解決

    這篇文章主要介紹了element ui的el-input-number修改數(shù)值失效的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • vue-autoui自匹配webapi的UI控件的實(shí)現(xiàn)

    vue-autoui自匹配webapi的UI控件的實(shí)現(xiàn)

    這篇文章主要介紹了vue-autoui自匹配webapi的UI控件的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 一篇文章帶你了解Vue組件的創(chuàng)建和使用

    一篇文章帶你了解Vue組件的創(chuàng)建和使用

    這篇文章主要為大家介紹了Vue組件的創(chuàng)建和使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • Vue之使用mockjs生成模擬數(shù)據(jù)案例詳解

    Vue之使用mockjs生成模擬數(shù)據(jù)案例詳解

    這篇文章主要介紹了Vue之使用mockjs生成模擬數(shù)據(jù)案例詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • VUE2.0+ElementUI2.0表格el-table循環(huán)動(dòng)態(tài)列渲染的寫法詳解

    VUE2.0+ElementUI2.0表格el-table循環(huán)動(dòng)態(tài)列渲染的寫法詳解

    這篇文章主要介紹了VUE2.0+ElementUI2.0表格el-table循環(huán)動(dòng)態(tài)列渲染的寫法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • elementui中使用el-tree控件懶加載和局部刷新

    elementui中使用el-tree控件懶加載和局部刷新

    這篇文章主要介紹了elementui中使用el-tree控件懶加載和局部刷新,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 使用Vue3生成二維碼和條形碼詳細(xì)圖文教程

    使用Vue3生成二維碼和條形碼詳細(xì)圖文教程

    在Vue項(xiàng)目和微信小程序中生成二維碼和條形碼是一個(gè)常見的需求,主要用于分享、產(chǎn)品識(shí)別等場(chǎng)景,這篇文章主要給大家介紹了關(guān)于使用Vue3生成二維碼和條形碼的相關(guān)資料,需要的朋友可以參考下
    2024-09-09
  • Vue提示框組件vue-notification使用詳解

    Vue提示框組件vue-notification使用詳解

    這篇文章主要介紹了Vue提示框組件vue-notification使用詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03

最新評(píng)論

娄烦县| 龙海市| 祁阳县| 汉中市| 香河县| 铅山县| 乐亭县| 荔浦县| 双鸭山市| 大英县| 青田县| 禹城市| 故城县| 乡宁县| 上思县| 兰考县| 南充市| 麻城市| 西和县| 运城市| 买车| 井冈山市| 东台市| 赤峰市| 定边县| 乐都县| 屯留县| 江川县| 襄城县| 承德县| 峨眉山市| 尼玛县| 凭祥市| 宣汉县| 靖宇县| 朝阳县| 阜平县| 墨脱县| 明水县| 浦北县| 乐安县|