vue實(shí)現(xiàn)視頻全屏切換功能
最近項(xiàng)目開發(fā)中遇到一個(gè)視頻窗口全屏切換功能,為此在這里做個(gè)記錄。
具體的實(shí)現(xiàn)思路:
<template>
<div class="content-box">
<div class="container">
<div id="screen" class="screen">
<el-button @click="screen()">
{{ fullscreen ? "還原" : "最大化" }}
</el-button>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
fullscreen: false,
};
},
mounted() {
window.addEventListener("resize", ()=> {
if (!this.isFullScreen()) {
// 非全屏狀態(tài)
this.fullscreen = false;
}
});
},
methods: {
//判斷是否全屏
isFullScreen() {
return !!(document.webkitIsFullScreen || this.fullele());
},
fullele() {
return (
document.fullscreenElement ||
document.webkitFullscreenElement ||
document.msFullscreenElement ||
document.mozFullScreenElement ||
null
);
},
screen() {
let element = document.getElementById("screen");
if (this.fullscreen) {
// 關(guān)閉全屏
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.webkitCancelFullScreen) {
document.webkitCancelFullScreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
}
} else {
// 全屏
if (element.requestFullscreen) {
element.requestFullscreen();
} else if (element.webkitRequestFullScreen) {
element.webkitRequestFullScreen();
} else if (element.mozRequestFullScreen) {
element.mozRequestFullScreen();
} else if (element.msRequestFullscreen) {
// IE11
element.msRequestFullscreen();
}
}
this.fullscreen = !this.fullscreen;
},
},
};
</script>
<style lang="scss" scoped>
.screen {
width: 500px;
height: 500px;
background-color: #fff;
border: 1px solid red;
}
</style>這里需要監(jiān)聽ESC鍵,為此做了特殊處理,這里是Demo,跟使用效果圖基本差不多
知識(shí)補(bǔ)充
除了實(shí)現(xiàn)視頻全屏切換,vue還可以實(shí)現(xiàn)瀏覽器全屏以及退出全屏,下面是實(shí)現(xiàn)代碼,希望對(duì)大家有所幫助
在src/utils/util.js中加入下面代碼塊
import Vue from 'vue'
const util = Vue.prototype.util = {}
// 切換全屏
util.fullScreen = function (element) {
element = element || document.body;
if (element.requestFullscreen) {
element.requestFullscreen();
} else if (element.mozRequestFullScreen) {
element.mozRequestFullScreen();
} else if (element.webkitRequestFullscreen) {
element.webkitRequestFullscreen();
} else if (element.msRequestFullscreen) {
element.msRequestFullscreen();
}
}
// 退出全屏
util.exitFullscreen = function () {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
}
export {
util
}
2.在頁面中使用全屏/退出全屏
<template>
<div class="header">
<!-- 全屏 -->
<a v-if="fullScreenFlag" href="javascript:;" rel="external nofollow" rel="external nofollow" class="iconfont iconquanping" title="全屏" @click="fullScreen()"></a>
<!-- 退出全屏 -->
<a v-else href="javascript:;" rel="external nofollow" rel="external nofollow" class="iconfont icontuichuquanping1" title="退出全屏" @click="exitFullScreen()"></a>
</div>
</template>
<script>
export default {
data () {
return {
fullScreenFlag: true,
};
},
methods: {
// 全屏
fullScreen(){
this.fullScreenFlag = false;
this.util.fullScreen();
},
// 退出全屏
exitFullScreen() {
this.fullScreenFlag = true;
this.util.exitFullscreen();
},
},
};
</script>到此這篇關(guān)于vue實(shí)現(xiàn)視頻全屏切換功能的文章就介紹到這了,更多相關(guān)vue視頻全屏切換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue實(shí)現(xiàn)nav導(dǎo)航欄的方法
這篇文章主要為大家詳細(xì)介紹了vue項(xiàng)目nav導(dǎo)航欄的實(shí)現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
詳解Jest結(jié)合Vue-test-utils使用的初步實(shí)踐
這篇文章主要介紹了詳解Jest結(jié)合Vue-test-utils使用的初步實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
詳解Vue如何實(shí)現(xiàn)字母驗(yàn)證碼
這篇文章主要為大家介紹了Vue如何實(shí)現(xiàn)字母驗(yàn)證碼詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
詳解Vue webapp項(xiàng)目通過HBulider打包原生APP
這篇文章主要介紹了詳解Vue webapp項(xiàng)目通過HBulider打包原生APP,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06
vue項(xiàng)目element UI input框掃碼槍掃描過快出現(xiàn)數(shù)據(jù)丟失問題及解決方案
這篇文章主要介紹了vue項(xiàng)目element UI input框掃碼槍掃描過快出現(xiàn)數(shù)據(jù)丟失問題,輸入框要掉兩個(gè)接口,根據(jù)第一個(gè)驗(yàn)證接口返回的code,彈不同的框,點(diǎn)擊彈框確認(rèn)再掉第二個(gè)接口,需要的朋友可以參考下2022-12-12
簡(jiǎn)易Vue評(píng)論框架的實(shí)現(xiàn)(父組件的實(shí)現(xiàn))
本篇文章主要介紹了簡(jiǎn)易 Vue 評(píng)論框架的實(shí)現(xiàn)(父組件的實(shí)現(xiàn)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-01-01

