vue實現(xiàn)視頻全屏切換功能
最近項目開發(fā)中遇到一個視頻窗口全屏切換功能,為此在這里做個記錄。
具體的實現(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) {
// 關閉全屏
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,跟使用效果圖基本差不多
知識補充
除了實現(xiàn)視頻全屏切換,vue還可以實現(xiàn)瀏覽器全屏以及退出全屏,下面是實現(xiàn)代碼,希望對大家有所幫助
在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>到此這篇關于vue實現(xiàn)視頻全屏切換功能的文章就介紹到這了,更多相關vue視頻全屏切換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
基于elementUI實現(xiàn)圖片預覽組件的示例代碼
這篇文章主要介紹了基于elementUI實現(xiàn)圖片預覽組件的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-03-03
使用Vue實現(xiàn)調(diào)用接口加載頁面初始數(shù)據(jù)
今天小編就為大家分享一篇使用Vue實現(xiàn)調(diào)用接口加載頁面初始數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10
解決el-tree數(shù)據(jù)回顯時子節(jié)點部分選中父節(jié)點都全選中的坑
本文主要介紹了解決el-tree數(shù)據(jù)回顯時子節(jié)點部分選中父節(jié)點都全選中的坑,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08
Vue3配置路由ERROR in [eslint]報錯問題及解決
這篇文章主要介紹了Vue3配置路由ERROR in [eslint]報錯問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10
Cookbook組件形式:優(yōu)化 Vue 組件的運行時性能
本文仿照Vue Cookbook 組織形式,對優(yōu)化 Vue 組件的運行時性能進行闡述。通過基本的示例代碼給大家講解,需要的朋友參考下2018-11-11
Vue中使用pdf.js實現(xiàn)PDF文檔展示功能實例
最近做項目遇到在線預覽和下載pdf文件,試了多種pdf插件,例如jquery.media.js(ie無法直接瀏覽),最后選擇了pdf.js插件,這篇文章主要介紹了Vue中使用pdf.js實現(xiàn)PDF文檔展示功能的相關資料,需要的朋友可以參考下2025-04-04

